2013-05-05 8 views
8

私はSignalRハブを持っています。クライアントが切断すると、ファイル操作を実行します。 これを行うには、Server.MapPathにアクセスする必要があります。HttpContextはSignalrハブファイルでnullです

ただし、私のHubクラスは.aspxまたはWebサービスではないため、HttpContextも要求もありません。

私はIO作業をHTTPリクエストハンドラに委任することを考えましたが、相対URIでWebRequestを作成することはできず、さまざまな場所にソリューションを展開できる必要があります。

SignalRのクラスSystem.IOで使用するローカルパスを取得するにはどうすればよいですか?

System.IO.Directory.GetCurrentDirectory()私にIISワーカープロセスの場所が表示されます。

答えて

14

あなたは、実行中のアプリケーションのパスを取得するためにhostingenvironmentを使用して、次の

var path = (System.Web.HttpContext.Current == null) 
        ? System.Web.Hosting.HostingEnvironment.MapPath("~/") 
        : System.Web.HttpContext.Current.Server.MapPath("~/"); 

を試すことができます。

+0

サラバナン、これでした!ありがとうヒープ – zaitsman

+0

これはうまくいきますが、あなたは単に 'HostingEnvironment.MapPath'だけを使うことができると信じています。つまり、 'null'チェックと' Server.MapPath'行をここで削除することができます。 –

+0

はい、ありがとうございます – Saravanan

関連する問題