ELMAH 1.2 отлично работает на CASSINI, но я не могу заставить его работать на IIS 7.5 - PullRequest
2 голосов
/ 13 октября 2011

Я использую asp.net 4 и C # в качестве решения для ошибки регистрации Я использую ELMAH 1.2 .

Мне удалось правильно использовать ELMAH на моем локальном компьютере с использованием CASSINI в Visual Studio 2010, но я, как только я перевожу веб-сайт на сервер с IIS 7 или IIS 7.5 (локально или удаленно), ELMAH не может записывать какие-либо ошибки , Нет ошибок или отображаются желтые страницы.

Я полагаю, что есть какие-то проблемы с конфигурациями, даже если я прочитал много уроков, я все еще не могу заставить их работать в производственной среде. Здесь мой Web.Config. Не могли бы вы сказать мне, что я делаю не так?

ПРИМЕЧАНИЯ: я убрал здесь строку подключения для безопасности, но на Кассини отлично работает Спасибо

  <?xml version="1.0"?>
    <configuration>
        <configSections>
            <section name="myWebAppSettings" type="System.Configuration.SingleTagSectionHandler"/>
            <!-- Elmah Local-->
            <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>
            <!-- / Elmah Local -->
        </configSections>
        <system.webServer>
            <!-- Elmah > IIS 7 -->
            <validation validateIntegratedModeConfiguration="false"/>
            <modules>
                <add name="Elmah.ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
            </modules>
            <handlers>
                <add name="Elmah" path="Admin/elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
            </handlers>
            <!-- / Elmah > IIS 7 -->
            <directoryBrowse enabled="false"/>
            <httpErrors errorMode="Custom">
                <remove statusCode="404" subStatusCode="-1"/>
                <remove statusCode="500" subStatusCode="-1"/>
                <error statusCode="404" path="/ErrorPages/404.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL"/>
                <error statusCode="500" path="/ErrorPages/Error.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL"/>
            </httpErrors>
        </system.webServer>
        <connectionStrings>
        </connectionStrings>
        <!-- Elmah -->
        <elmah>
            <security allowRemoteAccess="1" />
            <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="XXXXX" />
        </elmah>
        <!-- / Elmah -->
        <!-- Deny access to Admin Tools -->
        <location path="Admin">
            <system.web>
                <authorization>
                    <allow roles="CMS-ADMINISTRATOR"/>
                    <deny users="*"/>
                </authorization>
            </system.web>
        </location>
        <!-- / Deny access to Admin Tools -->
        <system.web>
            <!-- Elmah -->
            <httpHandlers>
                <add verb="POST,GET,HEAD" path="Admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
            </httpHandlers>
            <httpModules>
                <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
            </httpModules>
            <!-- / Elmah -->
            <customErrors mode="Off"></customErrors>
            <globalization culture="en" uiCulture="en"/>
            </pages>
            <compilation debug="true" defaultLanguage="c#" targetFramework="4.0">
                <assemblies>
                    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="WebProject.Core"/>
                    <add assembly="WebProject.DataAccess"/>
                    <add assembly="WebProject.Cms"/>
                    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                    <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                </assemblies>
            </compilation>
            <authentication mode="Forms">
                <forms loginUrl="~/Login.aspx" timeout="2880"/>
            </authentication>
            <roleManager enabled="true" cacheRolesInCookie="true">
                <providers>
                    <clear/>
                    <add connectionStringName="XXXXX" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
                </providers>
            </roleManager>
            <membership>
                <providers>
                    <clear/>
                    <add name="AspNetSqlMembershipProvider" connectionStringName="XXXXX" applicationName="/" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="3" minRequiredPasswordLength="16" minRequiredNonalphanumericCharacters="4" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
                </providers>
            </membership>
        </system.web>
    </configuration>

1 Ответ

2 голосов
/ 11 января 2012

Разница между используемой конфигурацией и используемой вами конфигурацией заключается в том, что в разделе modules отсутствует свойство runAllManagedModulesForAllRequests="true"; то есть мой раздел модулей выглядит следующим образом:

<modules runAllManagedModulesForAllRequests="true">
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    <add name="IIS7AppVersioningModule" type="IIS7AppVersioningModule.AppVersionModule,IIS7AppVersioningModule" />
</modules>
...