Elmah не регистрирует и не читает ошибки через iis 7.5 express - PullRequest
4 голосов
/ 23 января 2011

Итак, я не знаю, сталкивался ли кто-то еще с этим, но если я запускаю веб-сайт asp.net с ELMAH, установленным через IIS 7.5 Express, ELMAH отказывается регистрировать или даже читать из базы данных.Если я вместо этого запускаю сайт через Кассини, все хорошо.Элма работает как заклинание ...

Кто-нибудь еще испытывает эту проблему?

1 Ответ

5 голосов
/ 24 января 2011

Исходя из того, что вы описали до сих пор, единственное объяснение, которое я могу придумать, состоит в том, что модули и обработчик ELMAH могут быть зарегистрированы только под <system.web>, и именно поэтому они используются разработкой ASP.NETСервер (Кассини).IIS Express, с другой стороны, ожидает, что эти модули и обработчик будут зарегистрированы под <system.webServer>.Ниже приводится выдержка из образца web.config, поставляемого с ELMAH 1.1 :

<!-- 
    The <system.webServer> section is required for running ELMAH under Internet
    Information Services 7.0. It is not necessary for previous version of IIS.

    In general, it would be best to include it for all .NET Framework 2.0 and above
    configurations in order to have a more portable solution between various
    versions of IIS.

    IIS 5.x, IIS 6 require the modules and handlers to be declared in <system.web>
    whereas IIS 7 needs them declared here and complains if they are in fact
    declared in <system.web>. Fortunately, the
    <validation validateIntegratedModeConfiguration="false" /> entry tells IIS 7 
    not to worry about the modules and handlers declared in <system.web>.

    If you only ever want to use IIS 7, then do the following:

    1. Remove handlers and modules from <system.web>
    2. Remove the <validation validateIntegratedModeConfiguration="false" /> element
-->

<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>
...