Gibt es eine Möglichkeit, HttpContext.Current.Request.Url.Host
und HttpContext.Current.Request.ApplicationPath
in einem Aufruf zu erhalten?Request.Url.Host und ApplicationPath in einem Aufruf
Etwas wie "vollständige Anwendungs-URL"?
EDIT: Klarstellung - was ich brauche, ist dies der Teil innerhalb []:
http://[www.mysite.com/mywebapp]/Pages/Default.aspx
frage ich einfach aus Neugier.
EDIT 2: Danke für alle Antworten, aber keiner von ihnen war genau das, was ich suchte. FYI, löste ich das Problem auf diese Weise (aber ich bin immer noch daran interessiert zu wissen, ob es ein glatter Weg ist):
public string GetWebAppRoot()
{
if(HttpContext.Current.Request.ApplicationPath == "/")
return "http://" + HttpContext.Current.Request.Url.Host;
else
return "http://" + HttpContext.Current.Request.Url.Host + HttpContext.Current.Request.ApplicationPath;
}
Sie wollen Request.Url.Authority, in der Theorie; Host hat keinen Port. Leider ist es am besten, den Inhalt von Request.Headers ["HOST"] zu verwenden, da dieser den DNS-Port des Servers enthalten sollte, mit dem der Client eine Verbindung hergestellt hat. Wenn Sie sich Sorgen um HTTP/1.0-Anfragen machen, können Sie natürlich auf Request.Url.Host zurückgreifen. Ich habe Request.Url.Authority persönlich erfahren, um den Port zurückzugeben, an den die Serversoftware gebunden ist, nicht den Port in der "HOST" -Header --- das ist, was der Client verwendet, um eine Verbindung herzustellen. (FWIW, es war in SSRS 2012 Bericht Manager Website.) – Granger