ELMAH / Server 2008 / IIS 7.5 / MVC 2: 500 - Внутренняя ошибка сервера - PullRequest
1 голос
/ 17 февраля 2011

Я пытался устранить ошибку 404, полученную при попытке доступа к ELMAH.axd. Функциональность электронной почты 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.

Что мне не хватает? Я прочитал так много постов, и, похоже, нет единственно правильного ответа, я полагаю, учитывая несколько способов настройки приложений и серверов.

Ответы [ 3 ]

1 голос
/ 17 февраля 2011

Ошибка, которую вы видите, определенно выглядит как проблема конфигурации.

HTTP 500.22 - «Обнаружен параметр ASP.NET, который не применяется в режиме интегрированного управляемого конвейера.»

Я нашел эту ссылку , которая предоставляет некоторые подробности о критических изменениях в II7.Более подробную информацию о web.config можно найти здесь: . .

У вас настроен обработчик ELMAH в разделе system.webSever вашего файла web.config?Если нет, я считаю, что добавление этого должно решить вашу проблему:

<handlers>
     <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</handlers>
0 голосов
/ 28 февраля 2011

В каком режиме работает пул приложений (классический или интегрированный)? У меня возникла эта проблема, и я обнаружил, что Elmah начал работать после того, как я переключил пул приложений на интегрированный режим.

0 голосов
/ 17 февраля 2011

Все, что я вижу, это то, что:

  1. Вы пытаетесь сделать ошибки регистрации ELMAH в базе данных, но строка подключения ElmahConnectionString нигде не определена.Кстати, вы должны начать пытаться использовать logPath="~/App_Data" вместо этого;если все работает хорошо, тогда реализуйте соединение с базой данных.
  2. deny users = "*" означает отказать всем;deny users = "?" означает отказать неаутентифицированным пользователям.Я думаю, что вы хотите, последний.
...