What is the difference between Server.MapPath and HostingEnvironment.MapPath?
C#asp.netC# Problem Overview
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?
C# Solutions
Solution 1 - C#
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()
Solution 2 - C#
Server.MapPath()
requires an HttpContext
. HostingEnvironment.MapPath
does not.