Я создаю новый веб-сайт Web Forms aspnet 4.0 и установил Elmah 1.2 с помощью NuGet. Я добавил строку в web.config для входа в sql server express и создал соответствующую таблицу и 3 сохраненных процесса. Локально (Win 7 / IIS 7.5) все работает хорошо (при запуске через сервер vs2010 dev и мой локальный IIS) - я могу нажать elmah.axd / test, затем вернуться на elmah.axd и, конечно же, моя ошибка была зарегистрирована.
Затем я публикую сайт на нашем сервере разработки (Win 2008 R2 / IIS 7.5). Если я нажимаю elmah.axd, он сообщает мне, что ошибок нет - я затем перехожу на elmah.axd / test и возвращаюсь в Elmah, но ошибок по-прежнему нет. Если я переключу ведение журнала на память, а не на SQL, все будет работать нормально.
Я добавил права на выполнение пользователю пула приложений для всех сохраненных процессов на сайте. Я даже создал отдельную строку подключения под названием ElmahConnString, войдя в систему как SA - все равно не повезло. (Я попытался удалить a из sa, чтобы убедиться, что он сломался, и, конечно же, он сломался, поэтому он определенно использовал эту строку conn).
Моя веб-конфигурация выглядит так (большая часть этого была помещена в мой NuGet!);
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
...
<connectionStrings>
<add name="ConnString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SiteData;Integrated Security=True" />
</connectionStrings>
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ConnString" />
<security allowRemoteAccess="yes" requirePermission="false"/>
</elmah>
...
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
...
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorTweet" type="Elmah.ErrorTweetModule, Elmah" preCondition="managedHandler" />
</modules>
<handlers>
<add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
</system.webServer>
Вы заметите, что это включает наиболее широко данный ответ на эту проблему, а именно фрагмент system.webserver внизу: '(
Я не понимаю? Что мне не хватает?