Reputation: 363
How do I know the the complete virtual path that my application is currently hosted? For example:
http://www.mysite.com/myApp
or
http://www.mysite.com/myApp/mySubApp
I know the application path of HttpRequest but it only returns the folder name that my application is currently hosted, but how do I get the initial part?
Upvotes: 36
Views: 86712
Reputation: 25137
Url.Content("~")
worked great for me and is nice and simple. I used it in the view like this:
<a href="@(Url.Content("~" + attachment))">
Here my attachment
is a path like "/Content/Documents/Blah.PDF".
When my app is published to a IIS site that uses a virtual directory, Url.Content("~")
resolves to just the virtual directory name like, "/app-test", for example.
Upvotes: 0
Reputation: 75113
Request.Url
it contains several points that you might consider to use, see the image below:
Upvotes: 18
Reputation: 61
The below code will solve the purpose, however you have to do a bit tuning for two types of scenarios:
Hosted as Virtual application within a web application.
HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpRuntime.AppDomainAppVirtualPath;
Upvotes: 6
Reputation: 422222
The domain name part of the path is not really a property of the application itself, but depends on the requesting URL. You might be able to reach a single Web site from many different host names. To get the domain name associated with the current request, along with the virtual path of the current application, you could do:
Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath
Technically, an "application" is a virtual directory defined in IIS and Request.ApplicationPath
returns exactly that. If you want to get the folder in which the current request is handled, you can do this:
VirtualPathUtility.GetDirectory(Request.Path)
ASP.NET has no idea how to distinguish your sub-application from a bigger application if it's not defined as a virtual directory in IIS. Without registering in IIS, it just sees the whole thing as a single app.
Upvotes: 77