Журнал ошибок ELMAH: неверное сообщение об ошибке возвращается - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь использовать Elmah для регистрации ошибок в моем приложении MVC. Но по какой-то причине он сообщает о неправильной ошибке.

Я поместил следующий код в свой класс Controller, чтобы убедиться, что происходит ошибка:

        int a = 0;
        int b = 10 / a;

Как только этот код выполняется, отправляется ErrorMail, и он содержит следующее сообщение:

System.InvalidOperationException : Представление «Ошибка» или его мастер не найдены, или ни один механизм представления не поддерживает найденные местоположения. Были найдены следующие местоположения: ~ / Views / Home / Error.aspx ~ / Views / Home / Error.ascx ~ / Views / Shared / Error.aspx ~ / Views / Shared / Error.ascx ~ / Views / Home / Error. cshtml ~ / Просмотров / Home / Error.vbhtml ~ / Просмотров / Shared / Error.cshtml ~ / Просмотров / Shared / Error.vbhtml

Но представление генерируется правильно. Так что я не вижу реального исключения, только "фальшивое" выше.

У меня есть следующий файл web.config:

<configSections>
    <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>
</configSections>

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
  <errorMail from="noreply@website.com"
         to="me@mycompany.com"
         cc="you@mycompany.com"
         bcc="bcc@mycompay.com"
         subject="elmah error mail" />
  <security allowRemoteAccess="true" />
<!--elmah-->
</elmah>

<system.web>
  <customErrors mode="On" defaultRedirect="~/Error/GeneralError">
  <error statusCode="404" redirect="~/Error/Http404" />
</customErrors>

Как видите, я использую другую страницу для ошибки 404 и общую ошибку (которая просто: все остальные). У меня есть ErrorController, с этими двумя методами:

public class ErrorController : Controller
{
    public ActionResult Http404()
    {
        return View();
    }

    public ActionResult GeneralError()
    {
        return View();
    }
 }

Если я использую стандартный «Error.aspx» в папке «Shared», я вижу правильную страницу, но сообщение ErrorMail не отправляется, поэтому я считаю, что Elmah не обрабатывает исключение.

Может кто-нибудь заметить, что я делаю не так? Нужно ли размещать еще код?

Большое спасибо за любую помощь, которую вы можете оказать мне.

1 Ответ

0 голосов
/ 15 июля 2011

Из сообщения ~ / Views / Home / Error.aspx похоже, что он пытается найти представление с именем error.aspx, которое, я думаю, находится в папке shared / по умолчанию при создании сайта MVC3.

Может быть, вы должны посмотреть на:

http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

...