Uso un System.Timers.Timer
en mi aplicación Asp.Net y necesito usar el método HttpServerUtility.MapPath
que parece estar disponible solo en HttpContext.Current.Server.MapPath
. El problema es que HttpContext.Current
es null
cuando se desencadena el evento Timer.Elapsed
.¿Cómo acceder al método HttpServerUtility.MapPath en un subproceso o temporizador?
¿Hay alguna otra manera de obtener una referencia a un objeto HttpServerUtility? Podría inyectarlo en el constructor de mi clase. Es seguro ? ¿Cómo puedo estar seguro de que no será un Recolector de Basura al final de la solicitud actual?
Gracias!
Sin embargo, tenga en cuenta que lo anterior no funciona en las versiones posteriores de IIS. En IIS7, el inicio de la aplicación se puede invocar fuera de una solicitud http. Es decir, el ejemplo del código. Estoy seguro de que HostingEnvironment.MapPath() seguirá funcionando como lo hacía antes. – Robba
Pero HostingEnvironment.MapPath() da un error si lo pasa y vacía la cadena para obtener la ruta de la carpeta directamente ... HttpContext.Current.Server.MapPath (""); -> funciona HostingEnvironment.MapPath (""); -> plantea el error – VSP