Исходя из того, что вы описали до сих пор, единственное объяснение, которое я могу придумать, состоит в том, что модули и обработчик 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>