2013-06-16 13 views
5

私はエラーを記録するために私のmvcプロジェクトでELMAHを使用しています。時にはエラーが記録されないことに気付きました。だから私はtry..catchで文をラップし、ErrorSignal.FromCurrentContext().Raise(ex);と呼んだが、何もその特定のエラーのために再度記録されることはない。だから、私はELMAHのソースコードに踏み込もうとしました(Reflector VS addinを使って)。 Error.cspublic Error(System.Exception e, HttpContext context)this._form = CopyCollection(request.Form);エラーは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) 

実際のソースコード:そして、私はELMAHでこの例外を見ました。そして、CopyCollection方法:

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

だから、.NETは危険フォームデータから新しいNameValueCollectionの作成はできません。私のアプリケーションには多くのHTMLエディタがありますが、ELMAHはどんな状況でもエラーを記録したいと思っています。

どうすればよいですか?

答えて

3

残念ながら、this is due to a breaking change introduced by ASP.NET 4.0。 、より完全な議論については

<httpRuntime requestValidationMode="2.0" /> 

ELMAH project siteissue #217を参照してください。この問題を回避するには、今すぐあなたの設定に以下を加えることにより、古い動作に戻すためにASP.NETを依頼するだろう。

+2

私は、問題#217が2012年9月に修正されたことに気付きました。エルマの新しいバージョンをリリースする予定はありますか? –

+1

@AtifAziz PLUSONE!ナゲットに押してください。これは以前にパッチが当たっていました...もし問題がフレームワーク> = 4を必要とするなら、多分v4のnugetパッケージが存在する可能性がありますか? –

関連する問題