Elmah 基本设置问题/问题
Posted
技术标签:
【中文标题】Elmah 基本设置问题/问题【英文标题】:Elmah basic setup questions/issues 【发布时间】:2010-10-31 21:46:41 【问题描述】:我不觉得这很容易设置;要么设置配置中缺少步骤,要么无法正常工作,要么我实际上不了解它的目的。这里肯定有问题。问题显然是我。我只是没有让这个工作。这就是我所做的。
创建一个全新的 mvc 应用程序。 将以下内容放在 About.aspx 页面上。
把内容放在这里。
点击页面得到黄屏异常。
将 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>
将以下内容添加到 httpHandlers 部分:
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
添加到模块部分:
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
添加到处理程序部分:
<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" preCondition="integratedMode" type="Elmah.ErrorLogPageFactory, Elmah"/>
添加一个 elmah 部分:
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
这里令人好奇的是,该字符串的“.XmlFileErrorLog”部分显示为红色,显示为 ReSharper 错误,表明它“无法解析符号 '.ctor'”,当我查看 Reflector 中的 elmah.dll 时会显示这一点对象在两个公共构造函数中的任何一个中都需要“字符串”或“IDicationary”。
我正在运行带有 VS 2008 的 Windows Vista x64。将 App_Data 的权限设置为所有人作为 Co_Owner。
http://localhost:xxxx/elmah.axd 页面确实出现并且没有显示错误。当我再次点击“关于”页面时,我仍然看到黄色屏幕,并且 elmah.axd 仍然没有显示 app_data 文件夹错误。
我用自定义错误替换并创建了关联页面:
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm" />
自定义页面显示,但 elmah.axd 仍显示“无错误”。 App_data 还是空的!
作为启动此设置的来源,我使用了: code.google.com/p/elmah/wiki/MVC
那么我在哪里搞砸了?
~-=迈克=-~
【问题讨论】:
【参考方案1】:检查configuration/system.web/httpModules
(如果您在开发 Web 服务器上使用)和configuration/system.webServer/modules
(由 IIS7 使用)中是否存在 ErrorLogModule。这是项目中 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>
希望对你有帮助
【讨论】:
做到了!谢谢!尝试删除此部分:
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>
这意味着 Elmah 设置为仅使用默认的内存日志记录。这有助于排除故障,因为您知道这不是文件权限问题。因此,一旦您使用内存日志记录,您就可以将其设置为记录到 xml 文件。
您可能还想查看这个 *** 问题 How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?,该问题由 Atif Aziz 本人回答。
HTH, 查尔斯
【讨论】:
【参考方案3】:我从 nuget elmah
和 elmah on XML log
安装,虽然我可以访问 http://localhost/elmah.axd
,但没有获得预期的功能,但没有错误捕获。
我向 APP_DATA 文件夹中的帐户 IIS_IUSERS 授予写入权限,它开始处理 HTTP 404 错误和 MVC 基础结构之外的错误。但它没有在 mvc 中记录异常。解决方案是从 nuget 安装 elmah.mvc 包并开始捕获所有异常。
如果你的配置没问题,那么只需从 nuget 安装 elmah.mvc
包,它应该也开始在 mvc 中存储日志,而不仅仅是 HTTP 404。
【讨论】:
【参考方案4】:问题出在这一行
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
替换为
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
【讨论】:
以上是关于Elmah 基本设置问题/问题的主要内容,如果未能解决你的问题,请参考以下文章