2013-06-16 22 views
5

Hataları kaydetmek için mvc projemde ELMAH kullanıyorum. Bazen hataların kaydedilmediğini fark ettim. Bu yüzden ifadeleri try..catch içine sardım ve ErrorSignal.FromCurrentContext().Raise(ex); denir ama hiçbir şey bu özel hata için tekrar kaydedilmiş. Bu yüzden ELMAH kaynak koduna girmeyi denedim (Reflector VS addin kullanarak). Error.cs yılında public Error(System.Exception e, HttpContext context) yılında this._form = CopyCollection(request.Form);:Hatalar kaydedilmedi 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) 

Gerçek kaynak kodu: Ve ELMAH bu durum gördük. ve CopyCollection yöntemi:

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

Yani .Net tehlikeli Form verilerine yeni NameValueCollection oluşturmaya izin vermez. Uygulamamda bir çok HTML editörüm var ve her durumda hataların kaydedilmesi için ELMAH'ı istiyorum.

Ne yapabilirim?

cevap

3

Ne yazık ki, this is due to a breaking change introduced by ASP.NET 4.0. , Daha eksiksiz bir tartışma için

<httpRuntime requestValidationMode="2.0" /> 

ELMAH project site üzerine issue #217 bkz: Bir geçici çözüm şu anda yapılandırma için aşağıdaki ekleyerek eski davranışına geri dönmek için ASP.NET sormak olacaktır.

+2

# 217 numaralı sorununun Eylül 2012'de düzeltildiğini fark ettim. Yeni bir Elmah sürümü yayınlamak için herhangi bir plan var mı? –

+1

@AtifAziz PLUSONE! Lütfen nugete bas? Bu yamalar önce yandı ... Sorun şudur: çerçeve => 4, o zaman belki bir v4 nuget paketi olabilir? –