What is the difference between Server.MapPath and HostingEnvironment.MapPath?
asp.net, c#
Solution
`Server.MapPath()` eventually calls `HostingEnvironment.MapPath()`, but it creates a `VirtualPath` object with specific options:
The `VirtualPath` object passed to `HostingEnvironment.MapPath()` is constructed like this:
VirtualPath.Create(path, VirtualPathOptions.AllowAllPath|VirtualPathOptions.AllowNull);
Edit: in reality, the only difference is that you are allowed to pass null to `Server.MapPath()`, but not to `HostingEnvironment.MapPath()`
Problem
Is there any difference between `Server.MapPath()` and `HostingEnvironment.MapPath()`? Does `Server.MapPath()` have any advantages over `HostingEnvironment.MapPath()`? My original problem was mapping the file path on a server when the `HttpContext` is not present and I cannot pass a `Server` variable from `Global.asax` to my method. I used `HostingEnvironment.MapPath()` instead since it doesn't need `HttpContext`. Are there any situations when these two methods will give different results?