このコードを使用してください:
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
Pathがフォワード(/)またはバックスラッシュ()で始まる場合、このMapPath
メソッドは、Pathが完全な仮想パスであるかのようにパスを返します。
Pathがスラッシュで始まっていない場合、このMapPath
メソッドは、処理されているリクエストのディレクトリに対する相対パスを返します。
注:C#では、@は逐語的なリテラル文字列演算子です。これは、文字列を「そのまま」使用し、エスケープシーケンスでは処理しないことを意味します。
脚注
Server.MapPath(null)
そしてServer.MapPath("")
、あまりにもこの効果が得られます。