2013-05-05 92 views
8

我有一個SignalR集線器。當客戶端斷開連接時,我想執行文件操作。 要做到這一點,我需要訪問Server.MapPathSignalr Hub文件中的HttpContext爲null

但是,由於我的Hub類不是.aspx或Web服務,因此沒有HttpContext也沒有請求。

我想到將IO工作委託給HTTP請求處理程序,但我無法使用相對URI創建WebRequest,我需要能夠在各個位置部署解決方案。

如何從SignalR獲得System.IO類中的本地路徑?

System.IO.Directory.GetCurrentDirectory()給我IIS工作進程的位置。

回答

14

你可以嘗試以下

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

它使用hostingenvironment得到執行應用程序的路徑。

+0

saravanan,這樣做了!感謝堆 – zaitsman 2013-05-05 10:17:29

+0

這工作,但我相信你可以只使用'HostingEnvironment.MapPath',它適用於所有情況。也就是說,可以在這裏刪除'null'檢查和'Server.MapPath'行。 – 2017-02-08 15:54:02

+0

是的,感謝您的更新 – Saravanan 2017-02-10 13:55:04