asg*_*eo1 12 error-handling asp.net-mvc elmah asp.net-mvc-4
我在MVC4(RC)应用程序中遇到了一个奇怪的问题.(在.NET 4.0上运行)
我刚刚设置了Elmah来记录异常/错误.
我基本上安装了Elmah.MVC和elmah.sqlserver NuGet包.(分别为2.0.0和1.2版)
它似乎工作正常 - 我可以去elmah页面查看错误:
http://myserver/elmah
例如,如果我创建了一些404错误,它们将出现在此日志中.
不起作用的是:我有一个带有[HttpPost]动作的标准MVC控制器.我已经设置好了它总是会抛出一个异常:
public class TestController : Controller
{
[HttpPost]
[ValidateInput(false)]
public void Testing()
{
throw new Exception("uh oh");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试通过jQuery将数据发布到此控制器:
$.post('/Test/Testing', {test_data: 'This is some test data'});
Run Code Online (Sandbox Code Playgroud)
好的,这很有效.响应返回死亡的典型黄色屏幕,并且错误被捕获并记录在Elmah中.
但是,如果我尝试发布类似XML/HTML的内容,则Elmah中不会记录错误.我仍然从服务器后面得到相同的响应(死亡的黄色屏幕),但在Elmah中没有任何内容.
$.post('/Test/Testing', {test_data: '<test><test1>This is some test data</test1></test>'});
Run Code Online (Sandbox Code Playgroud)
为什么?这没有意义.
请注意,我已经关闭了操作的请求验证.如果我不这样做,那么发布XML/HTML数据会导致此异常:
从客户端检测到潜在危险的Request.Form值
NuGet也会拒绝记录该异常 - 我认为这是一个错误:
http://code.google.com/p/elmah/issues/detail?id=217
那么我遇到的这个问题的原因是什么?它是一个与我上面发现的问题相关的错误?
我只是因为请求包含XML/HTML而无法记录异常,这似乎是一个非常不幸的情况.
当然有办法解决这个问题吗?
我现在有一个解决办法,有人在http://code.google.com/p/elmah/issues/detail?id=217上建议
<system.web>您可以通过将其添加到以下部分来强制 ASP 使用旧的请求验证逻辑Web.config:
<httpRuntime requestValidationMode="2.0" />
Run Code Online (Sandbox Code Playgroud)
这将在全球范围内影响应用程序,这并不是一个很好的情况。
如果有人有更好的东西,请告诉我。
| 归档时间: |
|
| 查看次数: |
2699 次 |
| 最近记录: |