2013-05-05 15 views
8

Possiedo un hub SignalR. Quando il client si disconnette, voglio eseguire un'operazione di file. Per fare ciò, ho bisogno di accedere allo Server.MapPath.HttpContext null nel file Hub Signalr

Tuttavia, poiché la mia classe Hub non è un .aspx o un servizio Web, non è richiesta né HttpContext.

Ho pensato di delegare il lavoro di IO al gestore di richieste HTTP, ma non riesco a creare una richiesta Web con un URI relativo e devo essere in grado di distribuire la soluzione in varie posizioni.

Come è possibile ottenere il percorso locale da utilizzare nelle classi System.IO da un SignalR?

System.IO.Directory.GetCurrentDirectory() mi fornisce il percorso del processo di lavoro IIS.

risposta

14

È possibile provare il seguente

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

che utilizza il HostingEnvironment per ottenere il percorso dell'applicazione di esecuzione.

+0

saravanan, questo è stato !! Grazie heap – zaitsman

+0

Questo funziona, ma credo che si possa semplicemente usare 'HostingEnvironment.MapPath', funziona in tutti i casi. Ovvero, il controllo 'null' e la linea' Server.MapPath' potrebbero essere rimossi qui. –

+0

Sì, grazie per l'aggiornamento – Saravanan