Server.MapPath(“。”)、Server.MapPath(“〜”)、Server.MapPath(@“ \”)、Server.MapPath( “ /”)。違いはなんですか?
-
07-07-2019 - |
質問
Server.MapPath("。")
、 Server.MapPath("〜")
、 Serverの違いは誰でも説明できますか。 MapPath(@" \")
および Server.MapPath(" /")
?
解決
Server.MapPath は、物理ディレクトリにマップするための相対パスまたは仮想パスを指定します。
-
Server.MapPath("。")
1 は、実行中のファイル(aspxなど)の現在の物理ディレクトリを返します -
Server.MapPath(" ..")
は親ディレクトリを返します -
Server.MapPath("〜")
は、アプリケーションのルートへの物理パスを返します -
Server.MapPath(" /")
は、ドメイン名のルートへの物理パスを返します(必ずしもアプリケーションのルートと同じではありません)
例:
Webサイトアプリケーション( http://www.example.com/
)をポイントしたとしましょう
C:\Inetpub\wwwroot
でおよびショップアプリケーション(IISの仮想ディレクトリとしてのサブWeb、アプリケーションとしてマーク)をインストールしました
D:\WebApps\shop
たとえば、次のリクエストで Server.MapPath()
を呼び出す場合:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
then:
-
Server.MapPath("。")
1 はD:\ WebApps \ shop \ products
を返します
-
Server.MapPath(" ..")
はD:\ WebApps \ shop
を返します
-
Server.MapPath("〜")
はD:\ WebApps \ shop
を返します
-
Server.MapPath(" /")
はC:\ Inetpub \ wwwroot
を返します
-
Server.MapPath(" / shop")
はD:\ WebApps \ shop
を返します
パスがスラッシュ( /
)またはバックスラッシュ( \
)で始まる場合、 MapPath()
はパスを次のように返します。 Pathが完全な仮想パスの場合。
Pathがスラッシュで始まらない場合、 MapPath()
は、処理中のリクエストのディレクトリに相対的なパスを返します。
注:C#では、 @
は逐語的なリテラル文字列演算子であり、文字列を「そのまま」使用する必要があることを意味します。エスケープシーケンスについては処理されません。
脚注
-
Server.MapPath(null)
およびServer.MapPath("")
は、この効果も生成。
他のヒント
@splattneの答えを少し拡張してください:
MapPath(string virtualPath)
は次を呼び出します:
public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}
MapPath(VirtualPath virtualPath)
は、次を含む MapPath(VirtualPath virtualPath、VirtualPath baseVirtualDir、bool allowCrossAppMapping)
を呼び出します。
//...
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
//...
したがって、 MapPath(null)
または MapPath("")
を呼び出すと、 MapPath("。")
1) Server.MapPath("。")
-「現在の物理ディレクトリ」を返します。実行中のファイル(例: aspx
)の。
例 D:\ WebApplications \ Collage \ Departments
2) Server.MapPath(" ..")
-「親ディレクトリ」を返します
例 D:\ WebApplications \ Collage
3) Server.MapPath("〜")
-「アプリケーションのルートへの物理パス」を返します
例 D:\ WebApplications \ Collage
4) Server.MapPath(" /")
-ドメイン名のルートへの物理パスを返します
例 C:\ Inetpub \ wwwroot