web-dev-qa-db-ja.com

global.asaxからServer.MapPath()を使用するにはどうすればよいですか?

_web.config_に格納するいくつかのファイルパスを結合するには、Server.MapPath()を使用する必要があります。

ただし、Server.MapPath()は現在のHttpContextに依存しているため(私は思う)、これを行うことはできません。メソッドを使用しようとすると、「使用可能」であるにもかかわらず、次の例外が発生します。

このコンテキストではサーバー操作は使用できません。

_~/App_Data/_などのWebルート相対ディレクトリを_C:\inetpub\wwwroot\project\App_data\_などの完全な物理パスにマップできる別の方法はありますか?

117
John Bubriski

System.Web.Hosting.HostingEnvironment.MapPath() を試すことができます。

HttpContextは不要です。

285
Corbin March

つかいます AppDomain.CurrentDomain.BaseDirectoryContextはnullを返す可能性があるため!!

4
Kiran Banda

Global.asaxの場合、contextオブジェクトを使用します。

context.Server.mappath()

コンテキストを使用すると、セッションコレクション、要求オブジェクト、応答オブジェクトにもアクセスできます。エラーをログに記録する場合などに非常に便利です。

1
tekBlues