错误未记录在ELMAH中

时间:2013-06-16 09:29:33

标签: asp.net-mvc elmah

我在我的mvc项目中使用ELMAH来记录错误。我意识到有时错误没有记录。所以我将语句包装在try..catch中并调用ErrorSignal.FromCurrentContext().Raise(ex);但是没有为该特定错误再次记录。所以我试着进入ELMAH源代码(使用Reflector VS addin)。我在elmah看到了这个例外:

 A potentially dangerous Request.Form value was detected from the client (Text="<br>").
 StackTrace:    at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)

this._form = CopyCollection(request.Form); public Error(System.Exception e, HttpContext context)中的实际源代码:Error.cs。和CopyCollection方法:

private static NameValueCollection CopyCollection(NameValueCollection collection)
{
    if ((collection != null) && (collection.Count != 0))
    {
        return new NameValueCollection(collection);
    }
    return null;
}

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

我该怎么办?

1 个答案:

答案 0 :(得分:3)

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

<httpRuntime requestValidationMode="2.0" />

如需更完整的讨论,请参阅issue #217上的ELMAH project site