2013-05-05 18 views
8

Ich habe einen SignalR-Hub. Wenn der Client die Verbindung trennt, möchte ich eine Dateioperation durchführen. Um dies zu tun, muss ich auf die Server.MapPath zugreifen.HttpContext null in der Signalr Hub-Datei

Da es sich bei meiner Hub-Klasse jedoch nicht um eine ASPX- oder einen Webdienst handelt, gibt es keine HttpContext Anfrage.

Ich dachte, die IO-Arbeit an den HTTP-Request-Handler zu delegieren, aber ich kann keine WebRequest mit einem relativen URI erstellen und ich muss die Lösung an verschiedenen Orten bereitstellen können.

Wie kann ich den lokalen Pfad in System.IO Klassen von einem SignalR verwenden?

System.IO.Directory.GetCurrentDirectory() gibt mir den Speicherort des IIS-Arbeitsprozesses.

Antwort

14

können Sie versuchen, die folgenden

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

die die Hostingenvironment verwendet den Pfad der Ausführung Anwendung zu erhalten.

+0

saravanan, das war es !! Danke haufen – zaitsman

+0

Das funktioniert, aber ich glaube, Sie können einfach nur 'HostingEnvironment.MapPath' verwenden, es funktioniert in allen Fällen. Das heißt, die Überprüfung 'Null' und die Zeile 'Server.MapPath' könnten hier entfernt werden. –

+0

Ja, danke für das Update – Saravanan