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,查尔斯
| 归档时间: |
|
| 查看次数: |
10702 次 |
| 最近记录: |