【发布时间】:2011-10-05 23:47:04
【问题描述】:
我正在尝试使用 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 ~/Views/Home/Error.vbhtml ~/Views/Shared/Error.cshtml ~/Views/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();
}
}
如果我在 Shared 文件夹中使用标准的“Error.aspx”,我确实可以看到正确的页面,但没有发送 ErrorMail,所以我认为 Elmah 没有处理异常。
谁能发现我做错了什么?我需要发布更多代码吗?
非常感谢您能给我的任何帮助。
【问题讨论】:
-
你有
Error控制器吗? -
是的。它有两种方法,一个“GeneralError”,它只返回一个视图(视图位于“~/Error/GeneralError.aspx”)和一个带有视图 Http404.aspx 的“Http404”)我应该将这些视图更改为部分视图?
-
我已经更新了我的问题以确保
标签: c# asp.net-mvc elmah