Я использую System.Timers.Timer
в моем приложении Asp.Net, и мне нужно использовать метод HttpServerUtility.MapPath
, который, кажется, доступен только через HttpContext.Current.Server.MapPath
. Проблема заключается в том, что HttpContext.Current
является null
, когда Timer.Elapsed
событие срабатывает.Как получить доступ к методу HttpServerUtility.MapPath в потоке или таймере?
Есть ли другой способ получить ссылку на объект HttpServerUtility? Я мог бы добавить его в конструктор моего класса. Это безопасно ? Как я могу быть уверен, что это не будет сбор мусора в конце текущего запроса?
Спасибо!
Обратите внимание, что приведенное выше не работает в более поздних версиях IIS. В IIS7 запуск приложения может быть вызван за пределами HTTP-запроса. То есть пример кода. Я уверен, что HostingEnvironment.MapPath() будет работать так же, как раньше. – Robba 2010-10-25 13:44:58
Но HostingEnvironment.MapPath() дает ошибку, если вы передаете его и пустую строку, чтобы получить путь к папке напрямую ... HttpContext.Current.Server.MapPath (""); -> работает HostingEnvironment.MapPath (""); -> вызывает ошибку – VSP 2012-03-02 10:11:55