2010-01-15 38 views
18

Tôi đang sử dụng Elmah để đăng nhập vào một dự án ASP.NET MVC và tôi nhận được rất nhiều lỗi 404 cho một đường dẫn /prx2.php mà lần lượt chuyển một mã băm dưới dạng tham số truy vấn.Elmah báo cáo lỗi 404 không mong muốn

Tôi cho rằng đây là máy quét đang cố tìm lỗ hổng bảo mật. Bởi vì tôi không chạy PHP tôi an toàn! Tuy nhiên tôi muốn dừng ELmah báo cáo lỗi này.

Cách tốt nhất để loại trừ các loại lỗi này khỏi báo cáo mà không thực sự tạo trang /prx2.php. Tôi cũng muốn làm điều này trong một tập tin cấu hình hơn là làm nó một cách khẩn trương.

Bất kỳ ý tưởng nào?

Trả lời

18

Elmah hỗ trợ lọc lỗi - Error Filtering link

Điều này sẽ giải quyết vấn đề cho bạn. Bạn có thể xác định bộ lọc của bạn thông qua mã - trong file Global.asx, hoặc trong cấu hình xml cho chính nó ELMAH

+0

Sự cố là tất cả hoặc không có gì nếu tôi muốn thực hiện việc này trong tệp cấu hình, ví dụ: Bộ lọc '' TẤT CẢ 404 – Rippo

+0

Bạn có thể cụ thể hơn trong các tập tin cấu hình - xem phần Sử dụng JScript của liên kết đó. Điều này sẽ cho bạn biết cách cụ thể hơn và xác định các điều kiện phức tạp bằng cách sử dụng cú pháp javascript như sử dụng RegEx trên URL để khớp với các đường dẫn cụ thể – saret

+1

+1 Cảm ơn bạn sẽ xem xét, mặc dù điều này có vẻ hơi khó chịu! – Rippo

3

Bước 1: Cấu hình phần cấu hình để bao gồm ELMAH errorFilter phần:

<configSections> 
    <sectionGroup name="elmah"> 
    <!-- ... --> 
    <!-- this is the important part --> 
    <section name="errorFilter" requirePermission="false" 
     type="Elmah.ErrorFilterSectionHandler, Elmah"/> 
    </sectionGroup> 
</configSections> 

Bước 2: Cấu hình tự lọc trong phần <elmah>.

<elmah> 
    <!-- ... --> 
    <errorFilter> 
    <test> 
     <and> 
     <equal binding="HttpStatusCode" value="404" type="Int32" /> 
     <!-- you may want to consider something more generic like pattern="/.+[.]php" --> 
     <regex binding="Context.Request.Url" pattern="/prx2.php" /> 
     </and> 
    </test> 
    </errorFilter> 
</elmah>  

Bước 3: Bao gồm các Elmah.ErrorFilterModule bên trong module ứng dụng của bạn

hiện đại (IIS7 +) phiên bản bao gồm http mô-đun:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
    <!-- ... --> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" 
     preCondition="managedHandler" /> 
    </modules> 
</system.webServer> 

Legacy (IIS cũ) phiên bản bao gồm mô-đun http:

<system.web> 
    <httpModules> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
    </httpModules> 
</system.web> 
+0

Bạn chưa sử dụng tính năng này trong một thời gian nhưng bộ lọc này không phải là 'ALL' 404's? Tôi chỉ muốn một số loại tệp nhất định, xem nhận xét của tôi ở trên về câu trả lời được chấp nhận. Câu trả lời này không giúp tbh, xin lỗi – Rippo

+0

@Rippo - xấu của tôi - chỉ là trang này xuất hiện đầu tiên về cách xóa 404 khỏi ghi nhật ký elmah và liên kết trong câu trả lời được chấp nhận đã chết. Vì vậy, tôi đã tóm tắt ở đây những gì tôi đã học được từ google :) Dù sao tôi đã cập nhật câu trả lời của tôi để phù hợp với cũng "lọc chỉ đường dẫn cụ thể". –

Các vấn đề liên quan