gpt4 book ai didi

asp.net-mvc - Elmah 不会在 MVC 应用程序中记录 http post 请求的异常 - 如果请求包含 XML

转载 作者:行者123 更新时间:2023-12-04 01:08:30 25 4
gpt4 key购买 nike

我在 MVC4 (RC) 应用程序中遇到了一个奇怪的问题。 (在 .NET 4.0 上运行)

我刚刚设置了 Elmah 来记录异常/错误。

我基本上安装了 Elmah.MVC elmah.sqlserver NuGet 包。 (分别为 2.0.0 和 1.2 版本)

它似乎开箱即用 - 我可以转到 elmah 页面并查看错误:
http://myserver/elmah
例如,如果我创建了一些 404 错误,它们就会出现在此日志中。

不起作用的是:我有一个标准的 MVC Controller ,带有 [HttpPost]行动。我已经设置了它,所以它总是会抛出一个异常:

public class TestController : Controller
{
[HttpPost]
[ValidateInput(false)]
public void Testing()
{
throw new Exception("uh oh");
}
}

然后我尝试通过 jQuery 将数据发布到这个 Controller :
$.post('/Test/Testing', {test_data: 'This is some test data'});

好的,这有效。响应返回典型的黄色死亡屏幕,错误被捕获并记录在 Elmah 中。

但是,如果我尝试发布类似 XML/HTML 的内容,错误是 不是 登录 Elmah。我仍然从服务器得到相同的响应(死亡蓝屏),但在 Elmah 中没有。
$.post('/Test/Testing', {test_data: '<test><test1>This is some test data</test1></test>'});

为什么?这没有意义。

请注意,我已经关闭了对操作的请求验证。如果我不这样做,那么发布 XML/HTML 数据将导致此异常:

从客户端检测到潜在危险的 Request.Form 值

NuGet 也会拒绝记录该异常 - 我认为这是一个错误:

http://code.google.com/p/elmah/issues/detail?id=217

那么我遇到的这个问题的原因是什么?它是与我在上面发现的问题相关的错误吗?

我不能仅仅因为请求包含 XML/HTML 就记录异常,这似乎是一个非常不幸的情况。

当然有办法解决这个问题吗?

最佳答案

默认情况下,ELMAH 不会捕获 HttpRequestValidationException,如果用户发送无效请求,它将在 ELMAH 的报告中丢失。所以也有必要定义和使用这个全局过滤器:

public class ElmahRequestValidationErrorFilter : IExceptionFilter
{
public void OnException(ExceptionContext context)
{
if (context.Exception is HttpRequestValidationException)
ErrorLog.GetDefault(HttpContext.Current).Log(new Error(context.Exception));
}
}

关于asp.net-mvc - Elmah 不会在 MVC 应用程序中记录 http post 请求的异常 - 如果请求包含 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11630435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com