Server.MapPath(“。”)、Server.MapPath(“〜”)、Server.MapPath(@“ \”)、Server.MapPath( “ /”)。違いはなんですか?

StackOverflow https://stackoverflow.com/questions/275781

質問

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#では、 @ は逐語的なリテラル文字列演算子であり、文字列を「そのまま」使用する必要があることを意味します。エスケープシーケンスについては処理されません。

脚注

  1. 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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top