52

どうやってするの?

私はこれを使いたくない:

HttpContext.Current.Server.MapPath

httpcontext を必要とせずに呼び出すことができる同様の関数はありますか?

たとえば、何かを行うスレッドを開始する場合、httpcontext は使用できませんが、アプリのパスを取得する必要があります。いいえ、コンテキストを引数として渡すことも、共有変数から読み取ることもできません。

4

3 に答える 3

75

プロパティを使用しHttpRuntime.AppDomainAppPathます。

于 2010-03-09T14:08:15.333 に答える
1

一部の電子メール通知で提供する URL (Web アプリケーションのパーマリンク) を計算する方法を探しているときに、この質問に出くわしました。

これらは別のスレッドで生成されたため、HttpContext利用できませんでした。また、電子メールの生成に使用されるキュー テーブルに URL 関連の情報を入れないようにしたかったのです。

コード:

public static String GetCurrentAppDomainBasePath(String prefix = "http://")
{
   return String.Format("{0}{1}{2}", 
      prefix,
      System.Net.Dns.GetHostEntry("").HostName, 
      System.Web.HttpRuntime.AppDomainAppVirtualPath
   );
}

この関数は、次のような完全な仮想パスを返しますhttp://full-host-name/AppName。もちろん、いくつかの制限があります: ハードコーディングされたプロトコル ( http、https など) とhostname代わりに使用することdomain name(1 台のマシンで複数のドメインが定義されている場合は失敗します)。

于 2016-03-18T12:24:13.010 に答える