【问题标题】:ELMAH error logging : the wrong error message is returnedELMAH 错误记录:返回错误的错误信息
【发布时间】: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


【解决方案1】:

从消息 ~/Views/Home/Error.aspx 看起来它试图找到一个名为 error.aspx 的视图,我认为在创建 MVC3 站点时默认位于 shared/ 文件夹中..

也许你应该看看:

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

【讨论】:

  • 是的,“Error.aspx”默认在共享文件夹中。如果我创建了这样一个文件(例如,其中包含“hello world”),则该文件会显示给用户,但不会再出现 ErrorMail 和 Elmah 日志记录。
猜你喜欢
  • 1970-01-01
  • 2011-05-25
  • 2014-04-07
  • 2013-06-12
  • 2011-09-27
  • 2011-03-01
  • 2012-03-04
  • 2019-09-21
  • 1970-01-01
相关资源
最近更新 更多