asp.net-mvc – 未在ELMAH中记录的错误

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 未在ELMAH中记录的错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的mvc项目中使用ELMAH来记录错误.我意识到有时错误没有记录.所以我将语句包装在try..catch中并调用ErrorSignal.FromCurrentContext().Raise(ex);但是没有为该特定错误再次记录.所以我试着进入ELMAH源代码(使用Reflector VS addin).我在elmah看到了这个例外:
  1. A potentially dangerous Request.Form value was detected from the client (Text="<br>").
  2. StackTrace: at System.Web.HttpRequest.ValidateString(String value,String collectionKey,RequestValidationSource requestCollection)

实际源代码:this._form = CopyCollection(request.Form);在Error.cs中的公共错误(System.Exception e,HttpContext上下文)中.和CopyCollection方法

  1. private static NameValueCollection CopyCollection(NameValueCollection collection)
  2. {
  3. if ((collection != null) && (collection.Count != 0))
  4. {
  5. return new NameValueCollection(collection);
  6. }
  7. return null;
  8. }

因此.Net不允许从危险的表单数据创建新的NameValueCollection.我的应用程序中有很多Html编辑器,我希望ELMAH能够在任何情况下记录错误.

我能做什么?

解决方法

不幸的是,this is due to a breaking change introduced by ASP.NET 4.0.现在的解决方法是通过在配置中添加以下内容来要求ASP.NET恢复到旧行为:
  1. <httpRuntime requestValidationMode="2.0" />

有关更完整的讨论,请参阅ELMAH project site上的issue #217.

猜你在找的asp.Net相关文章