【问题标题】:ELMAH / Server 2008 / IIS 7.5 / MVC 2 : 500 - Internal server errorELMAH / Server 2008 / IIS 7.5 / MVC 2 : 500 - 内部服务器错误
【发布时间】:2011-06-29 05:07:59
【问题描述】:

我一直在尝试解决在尝试访问 ELMAH.axd 时收到的 404 错误。 ELMAH 电子邮件功能有效,但我无法导航到 axd。现在,我收到 500.22 - 内部服务器错误。有人可以在我的代码中发现错误或建议一些不禁用 ELMAH 的补救措施吗?

 <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"/>
    <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah"/>
  </sectionGroup>

<system.web>

<authentication mode="Windows" />
  <authorization>
    <allow roles="ViewOnly,Admins" />
    <deny users="*" />
  </authorization>

<elmah>
    <security allowRemoteAccess="1" />
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ElmahConnectionString" />
    <!-- email configured here -->
</elmah>

<httpModules>
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
  <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
  <add name="ErrorTweet" type="Elmah.ErrorTweetModule, Elmah"/>
  <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
</httpModules>

<httpHandlers>
  <add verb="GET,HEAD" path="asset.axd" validate="false" type="Telerik.Web.Mvc.WebAssetHttpHandler, Telerik.Web.Mvc" />
  <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />    
</httpHandlers>
</system.web>

<system.webServer>
<modules runAllManagedModulesForAllRequests="true" >
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
  <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
  <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</modules>

<location path="elmah.axd">
<system.web>
  <authorization>
    <deny users="*" />
  </authorization>
</system.web>
</location>

在 Global.asax 中:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

我正在使用数据库来记录 ELMAH 数据。

我错过了什么?我已经阅读了很多帖子,似乎没有一个正确的答案,我想考虑到可以配置应用程序和服务器的几种方式。

【问题讨论】:

    标签: asp.net-mvc-2 iis-7.5 elmah global-asax


    【解决方案1】:

    您看到的错误肯定是配置问题。

    HTTP 500.22 - “已检测到不适用于集成托管管道模式的 ASP.NET 设置。”

    我发现this link 提供了有关 II7 中重大更改的一些详细信息。更多关于 web.config 的细节可以found here

    您是否在 web.config 的 system.webSever 部分中配置了 ELMAH 处理程序?如果没有,我相信添加它应该可以解决您的问题:

    <handlers>
         <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
    </handlers>
    

    【讨论】:

      【解决方案2】:

      我只能看到:

      1. 您正试图将 ELMAH 记录错误记录到数据库中,但连接字符串 ElmahConnectionString 未在任何地方定义。顺便说一句,您应该开始尝试改用logPath="~/App_Data";如果一切运行良好,则实现数据库连接。
      2. deny users = "*" 表示拒绝所有人; deny users = "?" 表示拒绝未经身份验证的用户。我猜你想要的是后者。

      【讨论】:

      • 嗨 rsenna,我确实有数据库的配置设置。我没有展示它。
      • 当我浏览 IIS 7.5 服务器上的应用程序时,我收到以下消息: HTTP 错误 500.22 - 内部服务器错误 检测到 ASP.NET 设置不适用于集成托管管道模式。我想知道什么设置不适用,为什么,如果检测到,服务器不能告诉我们它不能应用什么设置?谢谢。
      • 在我的机器上,错误可以记录到 ELMAH_ERROR 中。所以我知道它工作正常。
      • 好的。所以我猜是乔纳森S。答案更接近真正的问题。我已经关注了他发布的链接,我找到了this 答案。希望对您有所帮助。
      • OK - 我恢复到早期的 web.config。现在,我得到一个登录窗口,它不允许我登录......所以我取消并收到消息:401 - 未经授权:由于凭据无效,访问被拒绝。任何见解将不胜感激。
      【解决方案3】:

      您的应用程序池在什么模式下运行(经典或集成)?我遇到了这个问题,发现在我将应用程序池更改为集成模式后 Elmah 开始工作了。

      【讨论】:

        猜你喜欢
        • 2012-10-27
        • 2012-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-13
        相关资源
        最近更新 更多