Я пытаюсь использовать 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 не обрабатывает исключение.
Может кто-нибудь заметить, что я делаю не так? Нужно ли размещать еще код?
Большое спасибо за любую помощь, которую вы можете оказать мне.