Comment obtenir l'url de base, sans accès à la demande

Comment faire pour obtenir l'URL de base dans le Réseau de base de l'application sans avoir de demande?

Je sais de la Demande, vous pouvez obtenir le régime et l'hôte (c'est à dire $"{Request.Scheme}//{Request.Host}" donnerait quelque chose comme https://localhost:5000), mais est-il possible d'obtenir cette information à partir de n'importe où ailleurs?

En d'autres mots, si j'ai une classe de service qui doit créer des Url absolues, comment puis-je obtenir l'URL courante, lorsqu'il n'est pas une requête http est disponible?

Mise à JOUR: Peut-être que le scénario n'a même pas de sens puisque l'hébergement d'URL est totalement externe à l'application et c'est pourquoi il n'a de sens pour extraire à partir de la Demande d'accueil..

Juste une note rapide que dans AspNetCore il y a un service qui peut être injecté dans une catégorie pour obtenir l'url de base de la requête courante (dans le cas où nous ne sommes pas dans un contrôleur avec un accès direct à la Demande). Simplement en injectant IHttpContextAccessor contextAccessor et puis la construction de la var url = $"{contextAccessor.HttpContext.Request.Scheme}://{contextAccessor.HttpContext.Request.Host.ToUriComponent()}"; Mais comme par github.com/aspnet/Hosting/issues/793 il semble qu'il sera nécessaire d'inscrire explicitement dans DI: services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

OriginalL'auteur iberodev | 2016-10-05