2009-05-31 5 views

Antwort

71

Der Domain Name Teil des Pfades ist nicht wirklich eine Eigenschaft der Anwendung selbst, sondern hängt von der anfragenden URL ab. Möglicherweise können Sie eine einzelne Website von vielen verschiedenen Hostnamen aus erreichen. Um den Domain-Namen mit der aktuellen Anforderung, zusammen mit dem virtuellen Pfad der aktuellen Anwendung zugeordnet zu bekommen, könnten Sie tun:

Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath 

Technisch eine „Anwendung“ ist ein virtuelles Verzeichnis definiert in IIS und Request.ApplicationPath zurückkehrt genau das. Wenn Sie den Ordner, in dem die aktuelle Anfrage gehandhabt erhalten möchten, können Sie dies tun:

VirtualPathUtility.GetDirectory(Request.Path) 

ASP.NET keine Ahnung hat, wie Sie Ihre Unteranwendung von einer größeren Anwendung zu unterscheiden, wenn sie nicht definiert ist als virtuelles Verzeichnis in IIS. Ohne Registrierung in IIS sieht es die ganze Sache als eine einzige App.

+2

gebrochen Und wenn die Anwendung ein virtuelles Verzeichnis in IIS, aber die Seite wir in mehrere Ordner angefordert sind, aber wir wollen Pfad virtuelles Verzeichnis einschließlich, aber nicht Ordner, wie dies zu tun ? – Krunal

+1

@Krunal [HttpRuntime.AppDomainAppVirtualPath] (https://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainappvirtualpath (v = vs.110) .aspx) oder Request.ApplicationPath – jproch

2

testen Werde (Haben Sie versucht es nicht)

public string GetVirtualPath(string physicalPath) 
{ 
string rootpath = Server.MapPath("~/"); 
physicalPath = physicalPath.Replace(rootpath, ""); 
physicalPath = physicalPath.Replace("\\", "/"); 
return "~/" + physicalPath; 
} 

Link 1

Link 2

1

Um voll und ganz diese Frage zu beantworten Ich denke, müssen Sie beschreiben, was Ihr eigentlich versuchen zu tun und was ist macht deinen Pfad Wert "unbekannt"

Normalerweise, wenn ich in Pfadfindungsprobleme diesen Blog-Eintrag von Rick Strahl cle laufen Ars Sachen für mich: http://www.west-wind.com/weblog/posts/269.aspx

Vielleicht müssen mischen und übereinstimmen, um zu bekommen, was Sie wollen.

+0

Der Link ist –

18
Request.Url 

es enthält mehrere Punkte, die Sie finden das Bild unten verwenden könnte prüfen:

enter image description here

3

Der Code unten löst den Zweck, jedoch muss man für zwei ein wenig Tuning tun Arten von Szenarien:

  1. Hosted als separate Web-Anwendung.
  2. Hosted als virtuelle Anwendung innerhalb einer Webanwendung.

    HttpContext.Current.Request.Url.GetLeftPart (UriPartial.Authority) + HttpRuntime.AppDomainAppVirtualPath;

6

In .NET 4.5

VirtualPathUtility.ToAppRelative(path)