Server.MapPath specifies the relative or virtual path to map to a physical directory.
Server.MapPath(".")
1 returns the current physical directory of the file (e.g. aspx) being executed
Server.MapPath("..")
returns the parent directory
Server.MapPath("~")
returns the physical path to the root of the application
Server.MapPath("/")
returns the physical path to the root of the domain name (is not necessarily the same as the root of the application)
An example:
Let's say you pointed a web site application (http://www.example.com/
) to
C:Inetpubwwwroot
and installed your shop application (sub web as virtual directory in IIS, marked as application) in
D:WebAppsshop
For example, if you call Server.MapPath()
in following request:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
then:
Server.MapPath(".")
1 returns D:WebAppsshopproducts
Server.MapPath("..")
returns D:WebAppsshop
Server.MapPath("~")
returns D:WebAppsshop
Server.MapPath("/")
returns C:Inetpubwwwroot
Server.MapPath("/shop")
returns D:WebAppsshop
If Path starts with either a forward slash (/
) or backward slash (
), the MapPath()
returns a path as if Path was a full, virtual path.
If Path doesn't start with a slash, the MapPath()
returns a path relative to the directory of the request being processed.
Note: in C#, @
is the verbatim literal string operator meaning that the string should be used "as is" and not be processed for escape sequences.
Footnotes
Server.MapPath(null)
and Server.MapPath("")
will produce this effect too.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…