Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you determine the physical path of a file without an HttpContext?

I have some processes that run without an HttpContext in an ASP.NET MVC web application. This process needs to be able to determine the physical path to the Contents directory of the application for reading/writing data. But, since it is without an HttpContext, I don't get to use fancy things like Server.MapPath and such. Suggestions?

like image 792
Matt Avatar asked Aug 23 '10 16:08

Matt


2 Answers

In a website, it is best to use HttpRuntime.AppDomainAppPath, because in certain moments of the execution path (i.e. when the site starts up), there's no HttpContext.Current available.

See also this post.

like image 149
Abel Avatar answered Oct 24 '22 15:10

Abel


The best way to do this is using the AppDomain.BaseDirectory property. As long as you don't fiddle with custom application domains, it will point to your root application directory. In other words; these two string would be the same:

string mapUsingAppDomain = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Contents");
string mapUsingServer = HttpContext.Current.Server.MapPath("~/Contents");
like image 4
driis Avatar answered Oct 24 '22 15:10

driis