【问题标题】:Elmah basic setup questions/issuesElmah 基本设置问题/问题
【发布时间】: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

那么我在哪里搞砸了?

~-=迈克=-~

【问题讨论】:

    标签: asp.net-mvc elmah


    【解决方案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>
    

    希望对你有帮助

    【讨论】:

    • 做到了!谢谢! 部分中缺少它。
    • 我在 IIS7 上使用了 IIS 6 配置(该应用程序之前在 IIS 6 上运行并带有 elmah 日志记录)并忘记了 system.webserver 模块不存在。我的错。
    【解决方案2】:

    尝试删除此部分:

    <elmah>
      <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
    </elmah>
    

    这意味着 Elmah 设置为仅使用默认的内存日志记录。这有助于排除故障,因为您知道这不是文件权限问题。因此,一旦您使用内存日志记录,您就可以将其设置为记录到 xml 文件。

    您可能还想查看这个 stackoverflow 问题 How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?,该问题由 Atif Aziz 本人回答。

    HTH, 查尔斯

    【讨论】:

      【解决方案3】:

      我从 nuget elmahelmah 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">
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-13
          • 1970-01-01
          • 2010-11-14
          • 1970-01-01
          • 2015-02-17
          • 2011-10-28
          • 1970-01-01
          • 2018-09-16
          相关资源
          最近更新 更多