2012-01-09 3 views
5

Я пытаюсь развернуть мое первое приложение MVC3 на сервере с IIS-7.5. У меня все работает, но у меня проблемы с моими методами отладки. Я использую проприетарную конструкцию отладки, которая отлично работает, когда я запускаю приложение локально (используя встроенный модуль «IIS Express» и Visual Studio), но когда я развертываю сервер, я даже не создаю свой файл отладки, гораздо меньше печатается.ASP.NET MVC3 Debugging Application_Start

Файл отладки создается в событии Application_Start, поэтому я помещаю штамп журнала событий в событие Application_Start и запускаю приложение локально и на сервере, просто чтобы узнать, запущено ли событие. Мои журналы событий локально были отпечатаны так, как предполагалось, но журналы событий на сервере не имеют никаких новых штампов. Что тут происходит?

protected void Application_Start() 
    { 
    AreaRegistration.RegisterAllAreas(); 

//This is just some code that calls to another module I wrote to easily stamp to the Event logs - it works, trust me 
    EventLogging.Initialize(); 
    EventLogging.WriteEventLog("Application Start Called Successfully"); 
    } 
+0

От «файла отладки» вы говорите о записи журнала событий (для чего требуется разрешение на журнал событий из вашего идентификатора пула приложений) в отличие от физического файла? –

+0

@AdamTuliper Извините за неоднозначность - «файл отладки», в приведенной выше фразе, относится к физическому файлу. Однако я могу писать ни физический файл, ни журналы событий. Позвольте мне попробовать добавить свой пул идентификаторов приложений прямо в разрешения журнала регистрации событий ... –

+0

@AdamTuliper Итак, я добавил идентификатор AppPool в ACL для EventLogs непосредственно в редакторе реестра - все равно ничего ... = (Возможно, у меня есть более фундаментальная проблема? :: sigh :: –

ответ

1

IIS 7.5 использует виртуальные счета для пулов приложений.

См. App Pool Identities. Убедитесь, что определенный идентификатор пула приложений имеет доступ к соответствующей папке для чтения/записи.

+0

Это очень интересно!Я смог добавить свой идентификатор пула приложений в список разрешений (ACL), но все равно не файл. Я не знаю, как изменять разрешения для журналов событий, чтобы эта учетная запись могла писать им - я думаю, что любая учетная запись должна быть в состоянии сделать это, хотя ... –

+0

Обновление - мне удалось добавить свою идентификатор AppPool в Журнал событий разрешает ACL через редактор реестра, но все равно ничего. –

+0

Взгляните на http://stackoverflow.com/questions/6351608/application-start-not-behaving-correctly-in-asp-net-4-0-application. Плакат утверждает, что их ведение журналов работает везде, кроме запуска приложения, это то же самое для вас? – CtrlDot

2

Я считаю, что проблема, с которой вы столкнулись, заключается в том, что процесс IIS запускается под учетной записью сетевой службы. По умолчанию эта учетная запись имеет права на чтение и выполнение только в корневой папке IIS. Следовательно, любые попытки записать в локальную файловую систему не удастся.

Для выполнения этой работы вам необходимо будет предоставить учетной записи сетевой службы явный доступ на запись к рассматриваемому файлу. Это можно сделать через проводник Windows.

  • Щелкните правой кнопкой мыши на файле и выберите свойства
  • Перейдите на вкладку безопасности
  • Добавить доступ на запись для учетной записи сетевой службы
+0

Я добавил Network Service в список ценных бумаг для родительской папки веб-сайта и размножался разрешений для всех дочерних объектов - без кубиков. = ( –

+0

@ C.Barlow вы проверили журнал событий или подключили отладчик? Похоже, что происходит что-то еще. – JaredPar

+0

Журналы событий ничего не показывают. К сожалению, учитывая, что это событие является первым, что срабатывает, Я не знаю, как прикрепить отладчик до того, как он пройдет ... –