Ich benutze eine System.Timers.Timer
in meiner Asp.Net-Anwendung und ich muss die HttpServerUtility.MapPath
Methode verwenden, die nur über HttpContext.Current.Server.MapPath
verfügbar scheint. Das Problem ist, dass HttpContext.Current
null
ist, wenn das Ereignis Timer.Elapsed
ausgelöst wird.Zugriff auf die HttpServerUtility.MapPath-Methode in einem Thread oder Timer?
Gibt es eine andere Möglichkeit, einen Verweis auf ein HttpServerUtility-Objekt zu erhalten? Ich könnte es in meine Klasse Konstruktor injizieren. Ist es sicher ? Wie kann ich sicher sein, dass es am Ende der aktuellen Anfrage nicht Garbage Collected sein wird?
Danke!
Beachten Sie jedoch, dass das oben genannte nicht in späteren Versionen von IIS funktioniert. In IIS7 kann der Anwendungsstart außerhalb einer HTTP-Anforderung aufgerufen werden. Das heißt, das Codebeispiel. Ich bin sicher, dass HostingEnvironment.MapPath() immer noch so funktioniert wie zuvor. – Robba
Aber HostingEnvironment.MapPath() gibt einen Fehler, wenn Sie es übergeben und leere Zeichenfolge, um den Ordnerpfad direkt zu erhalten ... HttpContext.Current.Server.MapPath (""); -> funktioniert HostingEnvironment.MapPath (""); -> löst Fehler – VSP