Keith Nicholas
Keith Nicholas

Reputation: 44288

How do you retrieve the directory of an ASP.NET MVC application?

Newbie question...

If I have a file that is in the root of the web app. How do I programmaticaly query the path of that file? ie, what directory it is in?

Upvotes: 0

Views: 2067

Answers (4)

Brian Warshaw
Brian Warshaw

Reputation: 22984

Old question, I know, but I found it while searching for a similar answer. Unless the API has changed, the reason why harpo's answer isn't working is because MapPath is an instance method, not a static method. But fear not--there's an instance of HttpServerUtility present in each instance of Controller--the Server property. So in your case, if you're within a controller (or, I suspect, a view):

var appRoot = Server.MapPath("~/");

That should do the trick!

Upvotes: 0

Jason Whitehorn
Jason Whitehorn

Reputation: 13685

If you are in your ASPX markup you can break out to C# and use the ResolveUrl method like so:

<%= Page.ResolveUrl("~/PathFromRoot/YourFile.pdf") %>

Upvotes: 0

Keith Nicholas
Keith Nicholas

Reputation: 44288

was close to what I was wanting..... except that didn't seem to compile or wasn't valid in the context I was calling it.

However I found what I needed with System.Web.HttpRuntime.AppDomainAppPath

Upvotes: 0

harpo
harpo

Reputation: 43168

System.Web.HttpServerUtility.MapPath( "~/filename.ext" );

will give you the physical (disk) path, which you would use with System.IO methods and such.

System.Web.Hosting.VirtualPathUtility.ToAbsolute( "~/filename.ext" );

will give you the "absolute" virtual path. This won't be the full url, but isn't necessarily the root of the domain, either. It could be something like

/admin/filename.ext

if the application is rooted in a subdirectory.

Upvotes: 2

Related Questions