我正在尝试使用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();
}
}
如果我在共享文件夹中使用标准的“Error.aspx”,我会看到正确的页面,但没有发送ErrorMail,所以我认为Elmah没有处理异常。
有人能发现我做错了吗?我是否需要发布更多代码?
非常感谢你能给我的任何帮助。
答案 0 :(得分:0)
从消息〜/ Views / Home / Error.aspx看起来它试图找到一个名为error.aspx的视图,我认为在创建MVC3网站时我默认在共享/文件夹中。
也许你应该看看:
http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx