1

这是一个不寻常的问题,目前困扰着我的实时服务器。

这是代码的精简版本,但该Exception exception...行是方法中的第一行,因此在此之前没有其他内容被破坏:

protected void Application_Error(object sender, EventArgs e)
{
    Exception exception = Server.GetLastError();

    SendAnEmail(exception);
}

我们收到的每封例外电子邮件都是:

消息 c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\096fbf1b\bbc483be\App_Web_error.aspx.639c3968.fnow3jpv.0.cs(188):错误 CS0246:类型或命名空间找不到名称“动态”(您是否缺少 using 指令或程序集引用?)

我困惑了一会儿,最后决定设置customErrorsOff这样我可以查看异常,认为它只是再次出现上述异常。然而,网站上显示的是实际错误,在上述情况下,由于某些代码访问了错误的空数组,导致索引超出范围。

所以在我看来,异常产生了,它跳转到全局错误处理程序,得到最后一个错误,但最后一个错误总是上面那个,每次。

有任何想法吗?我不知道实际的错误类型(抱怨动态)是否相关。我已经用谷歌搜索了它,我唯一能找到的就是你的应用程序池设置不正确——但整个网站都是 .net 4,我们使用了一些 .net 4.5 代码等,没有任何问题。我也尝试按照其他一些说明删除临时文件,但没有运气。

有什么建议吗?

该应用程序是一个 MVC 3 网站。

4

1 回答 1

1

看起来您的网站抛出异常,尝试在 customErrors 页面上重定向您,并且在错误页面的编译期间发生另一个异常 - 这就是您在 Application_Error 中得到的。这就解释了为什么当自定义错误被关闭时,您会得到预期的异常。在您的情况下,我更愿意实现从 HandleErrorAttribute 派生的子属性,将其应用于您的控制器/基本控制器并在那里发送电子邮件,而不是在 Application_Error 方法中。

这是 一篇关于 HandleErrorAttribute 用法的好文章。

于 2013-11-13T15:39:09.817 回答