Elmah基本设置问题/问题

Mik*_*ike 21 asp.net-mvc elmah

我发现这很容易设置; 要么设置配置中缺少一步,它没有正常工作,或者我实际上并不理解它的用途.这里肯定有一些错误.问题显然必须是我.我只是没有让这个工作.这就是我所做的.

创建一个全新的mvc应用程序.在About.aspx页面上放置以下内容.

<%throw new Exception("blah"); %>将内容放在此处.

点击页面获取黄色屏幕异常.

将elmah.dll添加到bin目录.

添加到Web.config文件configurationSections:

<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>
Run Code Online (Sandbox Code Playgroud)

将以下内容添加到httpHandlers部分:

<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
Run Code Online (Sandbox Code Playgroud)

添加到模块部分:

<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
Run Code Online (Sandbox Code Playgroud)

添加到处理程序部分:

<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" preCondition="integratedMode" type="Elmah.ErrorLogPageFactory, Elmah"/>
Run Code Online (Sandbox Code Playgroud)

添加一个elmah部分:

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
Run Code Online (Sandbox Code Playgroud)

这里很奇怪的是,该字符串的".XmlFileErrorLog"部分显示为红色,因为ReSharper错误表明它"无法解析符号'.'''当我在Reflector中查看elmah.dll时显示此对象需要两个公共构造函数中的任何一个中的"字符串"或"IDicationary".

我正在使用VS 2008运行Windows Vista x64.将App_Data的权限设置为Everyone作为Co_Owner.

HTTP://本地主机:XXXX/elmah.axd页面不上来,并显示没有错误.当我再次点击"关于"页面时,我仍然看到黄色屏幕,elmah.axd仍然显示app_data文件夹没有错误.

我替换了customerrors并创建了相关的页面:

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm" />
Run Code Online (Sandbox Code Playgroud)

自定义页面显示,但elmah.axd仍显示"无错误".App_data仍然是空的!

作为启动此设置的来源,我使用了:code.google.com/p/elmah/wiki/MVC

那么我在哪里搞砸了?

〜 - = =迈克 - 〜

eu-*_*-ne 20

检查两者中是否存在ErrorLogModule configuration/system.web/httpModules(如果您在Development Web Server上使用)和configuration/system.webServer/modules(由IIS7使用).这是项目中web.config的片段,我目前正在研究:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <httpModules>
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
        </httpModules>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="ErrorLog" />
            <remove name="ErrorMail" />
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
        </modules>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助


Cha*_*ino 11

尝试删除此部分:

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
Run Code Online (Sandbox Code Playgroud)

这意味着Elmah设置为仅使用默认的内存中日志记录.这有助于解决问题,因为您知道它不是文件许可的事情.因此,一旦您使用内存中的日志记录,就可以将其设置为登录到xml文件.

您可能还想查看此stackoverflow问题,如何让ELMAH使用ASP.NET MVC [HandleError]属性?那是Atif Aziz自己回答的.

HTHs,查尔斯