2013-06-16 2 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; 
} 

그래서 닷넷 위험 폼 데이터에서 새로운 NameValueCollection은을 만들 수 없습니다. 내 응용 프로그램에 많은 HTML 편집기가 있고 어떤 상황에서도 오류를 기록하기를 원합니다.

어떻게해야합니까?

답변

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

2012 년 9 월 # 217 호가 수정 된 것을 확인했습니다. Elmah의 새 버전을 출시 할 계획이 있습니까? –

+1

@AtifAziz PLUSONE! 너겟으로 밀어주세요. 이것은 오래 전에 패치되었습니다. 문제가 프레임 워크> = 4를 필요로한다면 아마 v4 nuget 패키지가있을 수 있습니까? –