460

Server.MapPath(".")Server.MapPath("~")Server.MapPath(@"\")の違いを説明できる人はいServer.MapPath("/")ますか?

4

3 に答える 3

830

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

それから:

  • 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

/Path がスラッシュ ( ) またはバックスラッシュ ( \) で始まる場合MapPath()、 は Path が完全な仮想パスであるかのようにパスを返します。

Path がスラッシュで始まらない場合、 はMapPath()処理中のリクエストのディレクトリに対する相対パスを返します。

注: C# では、@はそのままのリテラル文字列演算子であり、文字列を「そのまま」使用し、エスケープ シーケンスで処理しないことを意味します。

脚注

  1. Server.MapPath(null)そして、この効果も生み出しServer.MapPath("")ます。
于 2008-11-09T10:01:15.797 に答える