Application_Start работает некорректно в приложении ASP.Net 4.0

Я в тупике. Я пробежал все рекомендации по StackOverflow и Google ... без радости.

Мой метод Application_Start работает некорректно в моем приложении ASP.Net 4.0. Я могу устанавливать переменные приложения, но не могу вызывать свой метод ведения журнала.

Я могу установить переменные:

Application["appStartDT"] = DateTime.Now.ToString();

Но мой метод логирования не вызывается:

Utilities.writeLog("Application started at: " + System.DateTime.Now.ToString(), 4);

Это произошло примерно в то время, когда я переключился с внутреннего сервера IIS в VWDE 2010 на IIS 7.5 (в Windows 7), хотя я не на 100% связан с этим (пришлось переключиться, поскольку я использовал виртуальные каталоги).

[Редактирование пост-сценария: я переключился обратно на проект «Использовать сервер разработки Visual Studio», и мой метод Application_Start сработал и выполнил мой метод ведения журнала. Мне нужно использовать IIS. Есть предложения по поводу того, какие настройки IIS я упускаю из виду?]

Любые предложения будут полезны.

С уважением,

Луч


person Ray K. Ragan    schedule 15.06.2011    source источник
comment
Для доступа к переменным приложения необходимо использовать скобки - Application [appStartDT] = DateTime.Now; К сожалению, не уверен в вашем мероприятии Start.   -  person Jemes    schedule 15.06.2011
comment
@ o6tech, да, ты совершенно прав. Опечатка с моей стороны, но проблема все еще есть. Спасибо!   -  person Ray K. Ragan    schedule 15.06.2011
comment
что означает «4» в методе writeLog? Кроме того, можете ли вы попробовать то же самое в режиме выпуска и посмотреть, будет ли он зарегистрирован?   -  person SoftwareGeek    schedule 15.06.2011
comment
Можете ли вы установить точку останова для метода WriteLog и запустить его в режиме отладки? Что произойдет, если вы перейдете к методу?   -  person Brian Dishaw    schedule 15.06.2011
comment
@SoftwareGeek, 4 - это уровень ведения журнала, поэтому я могу варьировать уровни детализации в своих журналах.   -  person Ray K. Ragan    schedule 15.06.2011
comment
@Brian, я поставил точку останова в свой метод writeLog, и приложение пролетело мимо нее. Насколько я помню, есть проблема с точками останова в методе Application_Start, что-то в нем срабатывает до того, как отладка сможет подключиться к нему (я провел много исследований перед публикацией).   -  person Ray K. Ragan    schedule 15.06.2011
comment
Под каким анонимным именем вы управляете сайтом? Удостоверение конкретного пользователя или пула приложений? Вы можете узнать это, открыв апплет аутентификации для сайта в диспетчере IIS, затем щелкнув правой кнопкой мыши на Anonymous Authentication и выбрав Edit.   -  person Kev    schedule 16.06.2011


Ответы (1)


Я думаю, что одно отличие от перехода на IIS заключается в том, что процесс IIS, под которым работает ваш веб-сайт, теперь будет учетной записью [local machine] \ Network Service. Я предполагаю, что ваш Utilities.writeLog метод что-то записывает в файл. Если это действительно так, то вам следует убедиться, что учетная запись сетевой службы имеет права чтения / записи для файла и папки, в которых вы ведете журнал. У меня возникла такая же проблема с выводом журнала log4Net в файл, и когда я предоставил учетной записи Network Service доступ к папке / файлу, в который я входил, проблема исчезла.

person Paige Cook    schedule 15.06.2011
comment
Utilities.writeLog () работает везде, в том числе в других методах в Global.asax.cs. Чтобы проверить, я добавил сетевую службу с разрешениями на запись, но она по-прежнему не записывала при вызове в Application_Start. Спасибо за предложение. - person Ray K. Ragan; 15.06.2011
comment
вы не попадете в точку останова, отладчик не загружается при запуске приложения, это происходит намного позже. вы пробовали режим выпуска? - person SoftwareGeek; 16.06.2011