1. ホーム
  2. asp.net

[解決済み] Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). この違いは何ですか?

2022-03-21 22:18:50

質問

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

解決方法は?

サーバー.MapPath マップの相対パスまたは仮想パスを指定します。 を物理ディレクトリに .

  • Server.MapPath(".") 1 実行中のファイル(例:aspx)の現在の物理ディレクトリを返します。
  • Server.MapPath("..") 親ディレクトリを返します。
  • Server.MapPath("~") アプリケーションのルートへの物理的なパスを返します。
  • Server.MapPath("/") ドメイン名のルートへの物理パスを返します (アプリケーションのルートと同じとは限りません)

一例です。

例えば、Webサイトのアプリケーションを指した場合( http://www.example.com/ )を

C:\Inetpub\wwwroot

にショップアプリケーション(IISの仮想ディレクトリとしてサブウェブ、アプリケーションとしてマーク)をインストールします。

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("") 意志 もこの効果を発揮します。 .