このコードを使用します:
HttpContext.Current.Server.MapPath("~")
詳細リファレンス:
Server.MapPath
物理ディレクトリにマップする相対パスまたは仮想パスを指定します。
Server.MapPath(".")
実行中のファイル(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(".") returns D:\WebApps\shop\products
Server.MapPath("..") returns D:\WebApps\shop
Server.MapPath("~") returns D:\WebApps\shop
Server.MapPath("/") returns C:\Inetpub\wwwroot
Server.MapPath("/shop") returns D:\WebApps\shop
パスが円記号(/)または円記号()で始まる場合、このMapPath
メソッドは、パスが完全な仮想パスであるかのようにパスを返します。
パスがスラッシュで始まらない場合、MapPath
メソッドは処理中のリクエストのディレクトリに相対的なパスを返します。
注:C#では、@は逐語的なリテラル文字列演算子です。これは、文字列を「そのまま」使用し、エスケープシーケンスでは処理しないことを意味します。
脚注
Server.MapPath(null)
そしてServer.MapPath("")
、この効果も生み出します。