2013-05-05 10 views
8

Mam koncentrator SignalR. Gdy klient się rozłączy, chcę wykonać operację na pliku. Aby to zrobić, muszę uzyskać dostęp do Server.MapPath.HttpContext null w pliku Hub Signalr

Jednakże, ponieważ moja klasa Hub nie jest usługą .aspx lub usługą sieci Web, nie istnieje żadna usługa ani żądanie.

Myślałem o delegowaniu pracy IO do obsługi żądań HTTP, ale nie mogę utworzyć WebRequest z względnym URI i muszę mieć możliwość wdrożenia rozwiązania w różnych lokalizacjach.

Jak mogę uzyskać lokalną ścieżkę do wykorzystania w klasach System.IO z SignalR?

System.IO.Directory.GetCurrentDirectory() podaje lokalizację procesu roboczego IIS.

Odpowiedz

14

Można wypróbować następujące

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

który wykorzystuje hostingenvironment uzyskać ścieżkę aplikacji wykonującego.

+0

saravanan, zrobiłem to !! Dzięki stosy – zaitsman

+0

To działa, ale wierzę, że można po prostu używać tylko 'HostingEnvironment.MapPath', działa we wszystkich przypadkach. Oznacza to, że check 'null' check i' Server.MapPath' mogą zostać tutaj usunięte. –

+0

Tak, dziękuję za aktualizację – Saravanan