Server.MapPath внутри обработчика Application_End в Global.asax

Я хочу сохранить файл, когда мое приложение завершится.

Для этого мне нужно получить корневую папку приложения.

Единственный известный мне способ сделать это — использовать Server.MapPath("~"), но это не работает, даже через HttpContext.Current.Server, потому что, насколько я понимаю, нет текущего контекста.

Есть ли умный и простой способ получить путь к этой папке? Будут ли у меня проблемы с правами при попытке создать файл в корневой папке?

Любые альтернативные идеи, как это сделать?


person nir.arazi    schedule 12.03.2012    source источник


Ответы (2)


Вы должны использовать HttpRuntime.AppDomainAppPath, который всегда будет работать.

person SLaks    schedule 12.03.2012

  1. Запрос.MapPath("")
  2. Запрос.PhysicalApplicationPath
  3. HttpRuntime.AppDomainAppPath

Изменить

Это должно быть только HttpRuntime.AppDomainAppPath, так как два других параметра будут нулевыми в обработчике Application_End.

person Pankaj    schedule 12.03.2012
comment
Это там. Я использую VS 2010. Веб-приложение. В файле Global.asax.cs под обработчиком Application_End вы можете ввести вышеупомянутый код... Верно? - person Pankaj; 12.03.2012
comment
Да, но это будет null. Вот почему он задает вопрос в первую очередь. - person SLaks; 12.03.2012
comment
+1. Спасибо. Ты прав. На самом деле я не мог понять, как запустить событие Application_End изначально. - person Pankaj; 12.03.2012