2013-05-27 16 views
15

Merhaba Projemde kurulum ELMAH var, amaELMAH türüne göre hatayı görmezden nasıl oturum

System.Web.HttpException gibi bir çok hatalar alıyorum: Potansiyel olarak tehlikeli Request.Path değeri tespit edildi dan müşteri (:).

Oluşturulan: Güneş 2013 26 May 21:46:30 GMT

System.Web.HttpException (0x80004005): bir tehlikeli Request.Path değer, istemci (:) kullanılarak tespit edilmiştir. System.Web.HttpApplication.PipelineStepManager.ValidateHelper de System.Web.HttpRequest.ValidateInputIfRequiredByConfig() (HttpContext bağlamı) de

ben onları görmezden istiyorum ve benim posta göndermek ama yazmıyorum ELMAH DB içinde. Mümkün mü?

cevap

19

Evet, bunu ELMAH içindekullanarak ve described in detail on the project wiki olanağında yapabilirsiniz.

<errorFilter> 
    <test> 
     <and> 
      <regex binding="FilterSourceType.Name" pattern="mail" /> 
      <regex binding="Exception.Message" 
       pattern="(?ix: \b potentially \b.+?\b dangerous \b.+?\b value \b.+?\b detected \b.+?\b client \b)" /> 
     </and> 
    </test> 
</errorFilter> 

ilk <regex> koşulu posta meydana gelmeyeceği konusunda filters based on the filtering source böyle: Kısacası, web.config aşağıdaki filtre işi (Zaten kurulum modülleri yapılandırma bölümleri varsayarak) yapmalıdır. Check out the documentation on the wiki for full details.

protected void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs e) 
{ 
    if (e.Message == "A potentially dangerous Request.Path value was detected from the client (:).") 
     e.Dismiss(); 
} 

// this method may also be useful 
protected void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e) 
{ 
    if (e.Message == "A potentially dangerous Request.Path value was detected from the client (:).") 
    { 
     // do something 
    } 
} 

Yoksa iki yöntem birleştirebilirsiniz:

+0

Yapamam "System.InvalidOperationException: İstenen kaynağa yalnızca SSL üzerinden erişilebilir." Benim kalıptır: You have gerekiyordu

+1

@RhysStephens biri' 'düğümü, böylece ikincisi göz ardı ediliyor. Posta kutusuyla birlikte, 404 & mesaj desen durumunuzla birlikte 've' 'olmalıdır. Niçin burayı SO'da ya da [ELMAH Tartışma Grubu] 'nda (http://groups.google.com/group/elmah) başka bir soru olarak göndermiyorsunuz ve biz de oradan alabilir miyiz? –

14

normal ifadeleri içermeyen bir çözüm, basitçe Global.asax.cs eklemek bu

void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs args) 
{ 
    Filter(args); 
} 

void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs args) 
{ 
    Filter(args); 
} 

void Filter(ExceptionFilterEventArgs args) 
{ 
    if (args.Exception.GetBaseException() is HttpRequestValidationException) 
     args.Dismiss(); 
} 
+0

Bu, kod tabanımdaki sorunun ne sorduğunun tersini yapar. Hala e-postayı gönderiyorum ama veritabanına giriş yapmıyorum. – Marc

+0

Sadece aradığım şey, teşekkürler. – webnoob

+1

İki işlev vardır, biri günlükten filtrelemek için diğeri de e-posta için filtrelenir. Https://code.google.com/p/elmah/wiki/ErrorFiltering – AaronM

İlgili konular