Wie man Basis-url ohne Zugriff auf eine Anfrage

Wie man die Basis-URL in AspNet-core-Anwendung, ohne eine Anfrage?

Ich weiß von der Anfrage erhalten Sie die Schema und host (dh $"{Request.Scheme}//{Request.Host}" etwas geben würde wie https://localhost:5000), aber ist es möglich, diese Informationen zu bekommen von irgendwo sonst?

In anderen Worten, wenn ich eine service-Klasse, die braucht absolute URLs, wie kann ich die aktuelle URL, wenn es nicht eine http-Anforderung zur Verfügung?

UPDATE: Vielleicht ist das Szenario keinen Sinn, da die hosting-URL ist völlig außerhalb der Anwendung und deshalb macht es nur Sinn, Auszug aus dem Antrag host..

Nur eine kurze Notiz, dass in AspNetCore es ist ein Dienst, der injiziert werden können, in jede Klasse, um den Basis-url der aktuellen Anforderung (wenn wir uns nicht in einem controller mit direktem Zugang auf Anfrage). Einfach durch Einspritzen von IHttpContextAccessor contextAccessor und bauen dann die var url = $"{contextAccessor.HttpContext.Request.Scheme}://{contextAccessor.HttpContext.Request.Host.ToUriComponent()}"; Aber pro github.com/aspnet/Hosting/issues/793 es scheint, wird es notwendig sein, explizit zu registrieren es in DI: services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

InformationsquelleAutor iberodev | 2016-10-05

Schreibe einen Kommentar