Using Server.MapPath in external C# Classes in ASP.NET
I'm trying to get the absolute path of certain files in a C# class. Server.MapPath
works great of course for ASPX and their code-behind pages, but that doesn't exist in another class file. I tried HostingEnvironment.MapPath()
, but that complains that the relative virtual path isn't allowed. Any thoughts?
System.Web
is already imported.
Solution 1:
The ServerUtility
class is available as an instance in your HttpContext
. If you're in an environment where you know it'll be executed inside the ASP.Net pipeline, you can use
HttpContext.Current.Server.MapPath()
You'll have to import System.Web
though.
Solution 2:
you can also use:
var path = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/myfile.txt")
if
var path = Server.MapPath("~/App_Data");
var fullpath = Path.Combine(path , "myfile.txt");
is inaccessible
Solution 3:
Can't you just add a reference to System.Web
and then you can use Server.MapPath
?
Edit: Nowadays I'd recommend using the HostingEnvironment.MapPath
Method:
It's a static method in System.Web
assembly that Maps a virtual path to a physical path on the server. It doesn't require a reference to HttpContext
.