2012-04-02 7 views
2

Entschuldigung für die Frage, die bereits einige Male und in anderen Foren gefragt wird, aber ich habe wirklich keine Lösung gefunden, die gibt, was ich brauche.ASP Site root url

Ich habe eine ASP.NET MVC-Site. Und in einem der Controller muss ich die Root-URL der Website finden (zum Beispiel http://myhost:7777/MyVirtualDir/). Ich brauche es wie es ist, keine relativen URLs - nur vollständige absolute ROOT-URL der Website. Der Grund ist, dass ich diese URL von einer anderen Anwendung aus verwenden werde, um auf den vor Ort gehosteten Dienst zuzugreifen. Ich habe versucht, viele dirrerent Varianten und Lösungsvorschläge aus anderen Foren, zB:

VirtualPathUtility.ToAbsolute("~") // Returns "/" - it returns relative url 
Url.Content("~") //Returns "/MyVirtualDir/" - only virtual directory path part 

und alle anderen ToAbsolute zurückkehren relative Pfade.

erfand ich folgendes:

Request.Url.ToString().Substring(0, Request.Url.ToString().Length - Request.Url.PathAndQuery.Length + Url.Content("~").Length); 

Sieht aus wie es funktioniert. Aber hier ist zu viel Magie. Gibt es einen normalen Weg, um einen solchen Pfad zu finden?

+0

Also, was mit dieser Lösung nicht in Ordnung war: http://stackoverflow.com/questions/9121140/cant-get -site-root-url-in-asp-mvc – mellamokb

+0

Keine der bereitgestellten Lösungen dort behandelt virtuellen Verzeichnispfad –

+0

Wenn ich mit meiner eigenen URL der Form 'http://sub.domain.com/virtual/WebPage.aspx getestet ', der Code' String.Format ("{0}: // {1} {2}", Request.Url.Scheme, Request.Url.Authority, Url.Content ("~ /")) 'gibt das genaue Ergebnis zurück Das gleiche Ergebnis wie in Ihrem Codebeispiel. Es sei denn, ich verpasse etwas? – mellamokb

Antwort