Tôi nhận thấy trong hộp mà ELMAH ghi nhật ký 404 không tìm thấy cho favico trên máy chủ cục bộ của tôi. Làm cách nào để loại bỏ lỗi này thông qua bộ lọc? Tôi không quá quen thuộc với việc định cấu hình nó ..Chặn lỗi 404 FavIco trong ELMAh
Trả lời
Elmah chính thức Error Filtering page giải thích một số cách mà lỗi favicon 404 này có thể bị chặn lại.
Bạn có thể lọc ra tất cả lỗi 404 trong web.config như vậy. Tôi không chắc chắn có một cách để chỉ surpress một 404 cho một favicon mặc dù.
<errorFilter>
<test>
<equal binding="HttpStatusCode" value="404" type="Int32" />
</test>
</errorFilter>
Nếu bạn muốn thực hiện theo chương trình, bạn có thể loại bỏ lỗi trong sự kiện lọc ErrorLog hoặc ErrorEmail như được giải thích trong tài liệu chính thức. Mã dưới đây hơi quá mức, nhưng nó thể hiện cách bạn có thể lọc ra chỉ lỗi 404 cho yêu cầu /favicon.ico.
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if (((HttpException)e.Exception.GetBaseException()).GetHttpCode() == 404
&& ((HttpContext)e.Context).Request.Path == "/favicon.ico")
{
e.Dismiss();
}
}
Cá nhân tôi muốn lọc tất cả 404 khai báo thông qua web.config hoặc chỉ cung cấp một biểu tượng như Joel đề xuất.
Nó không giúp bạn tìm hiểu cách định cấu hình ELMAH, nhưng cách dễ nhất để ngăn chặn 404 cho yêu cầu cho favicon là cung cấp một ...
tôi chỉ bỏ qua tuyến đường thay vì định cấu hình Elmah. Điều này phù hợp với tôi:
routes.IgnoreRoute("{*favicon}", new {[email protected]"(.*/)?favicon.ico(/.*)?"});
Bạn có chắc chắn đã thực sự kiểm tra điều này với ELMAH không? Bỏ qua tuyến đường không hoạt động. Nó chỉ làm cho yêu cầu bị bỏ qua bởi MVC và truyền vào đường dẫn ASP.NET thông thường mà 404s nó, gây ra để được đăng nhập vào ELMAH. –
Đã một thời gian kể từ khi tôi xem mã đó, vì vậy tôi cần phải kiểm tra kỹ, nhưng tôi đã sử dụng kỹ thuật này trên một trang web trực tiếp và dường như nó hoạt động cho tôi. Có một sự khác biệt giữa IIS6 và IIS7? – Junto
Có hay không bạn cần nó phụ thuộc vào cấu hình máy chủ. Đối với Cassini (Visual Studio gỡ lỗi), những 404 được đăng nhập bởi Elmah. Đối với IIS 6, Elmah không nhìn thấy chúng nếu chúng bị bỏ qua bằng cách định tuyến. Tôi đã không thử nghiệm IIS 7. –
Tôi đã sử dụng giải pháp lập trình của Kurt Schindler ở trên (vs config); Tuy nhiên, tôi nhận thấy rằng không HttpExceptions đã nhận được ném hai lần trong xử lý sự kiện ErrorLog_Filtering. Để tránh điều này, hãy đảm bảo bạn thực hiện kiểm tra kiểu trên phương thức GetBaseException. Đây là đoạn mã
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if (e.Exception.GetBaseException() is HttpException)
{
if (((HttpException)e.Exception.GetBaseException()).GetHttpCode() == 404
&& ((HttpContext)e.Context).Request.Path == "/favicon.ico")
{
e.Dismiss();
}
}
}
Không có gì mới ở đây, chỉ là một FYI nếu bạn tình cờ thấy một số hành vi lạ.
Thanks ...
Nó không phải là ứng dụng web của tôi đang yêu cầu một favicon, đó là khi tôi duyệt đến trang elmah.axd, trình duyệt yêu cầu một favicon.
Giả sử, điều này sẽ làm việc:
<elmah>
<errorFilter>
<test>
<and>
<equal binding="HttpStatusCode"
value="404" type="Int32" />
<regex binding="Context.Request.ServerVariables['URL']"
pattern="/favicon\.ico(\z|\?)" />
</and>
</test>
</errorFilter>
</elmah>
Nhưng đoán những gì, nó không.
Cách duy nhất tôi tìm được để làm việc là thêm một favicon.ico vào gốc web của tôi. Đây không phải cho trang web của tôi, nó chỉ dành cho trang elmah.axd. KHÔNG cần gọi route.IgnoreRoute.
Dưới đây là elmah.axd với favicon của tôi, và không có lỗi:
Hey Matt, bạn cần phải chắc chắn rằng bạn đăng ký ErrorFilter của bạn trong cả httpModule và system.webServer modules - và chúng cần phải được đăng ký sau khi các trình xử lý ErrorLog (hoặc bất kỳ mô đun ghi nhật ký nào khác) - đó là một ngăn xếp ngược lại, được ưu tiên khôn ngoan. –
@Matt Enright Bình luận hay. – Kuncevic
tôi đã có thể để có được ELMAH để bỏ qua các lỗi bằng cách sử dụng mã dưới đây. Bạn có khả năng có thể thêm bất kỳ đường dẫn nào khác mà bạn muốn bỏ qua. Về mặt kỹ thuật, đây có thể là các thử nghiệm riêng biệt nhưng nếu tôi không muốn bỏ qua các lỗi 404 khác trong tương lai có liên quan đến ứng dụng của mình, tôi cho rằng tôi sẽ để các nhóm này lại với nhau vì chúng không phụ thuộc vào ứng dụng của tôi và chỉ ở đây để xóa lộn xộn khỏi quá trình ghi lỗi của tôi.
<errorFilter>
<test>
<or>
<and>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<equal binding="Context.Request.Path" value="/favicon.ico" type="string" />
</and>
<and>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<equal binding="Context.Request.Path" value="/robots.txt" type="string" />
</and>
</or>
</test>
</errorFilter>
Tất nhiên nếu bạn lo lắng về việc làm lộn xộn web.config của bạn, bạn luôn có thể chia bộ lọc thành tệp chuyên dụng.
<elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" />
<errorFilter configSource="elmahFilters.config" />
</elmah>
- 1. Elmah báo cáo lỗi 404 không mong muốn
- 2. Elmah lọc 404 lỗi từ email nhưng đăng nhập vào cơ sở dữ liệu
- 3. Không thể đăng nhập Mã lỗi 500 trong ELMAH
- 4. Lỗi không được ghi trong ELMAH
- 5. Trang lỗi, ném lỗi ELMAH với Custom Lỗi trang
- 6. jQuery ajax: cách ngăn chặn spam lỗi 404 trong chrome DevTools?
- 7. OpenRDF Sesame - lỗi 404
- 8. Apache Tomcat 404 Lỗi
- 9. lỗi 404 với ClientBin
- 10. Elmah chỉ đăng nhập 15 lỗi
- 11. Góc: xử lý lỗi $ http 404
- 12. Cách tạo lỗi 404 mạnh trong Yii
- 13. Mã lỗi 404, 1, 404; 2 etc HTTP là gì?
- 14. Lỗi Django 404 tùy chỉnh
- 15. Gửi lỗi 404 qua htaccess?
- 16. Elmah không kích hoạt khi lỗi tùy chỉnh được bật
- 17. node.js + kết nối lỗi 404
- 18. Kích hoạt lỗi 404 với CakePHP 2.0?
- 19. ASP.NET MVC - Elmah không hoạt động và trả lại trang 404 cho elmah.axd
- 20. lỗi mod_rewrite 404 nếu .php
- 21. Lỗi 404 với wordpress ssl
- 22. .axd tệp tạo lỗi 404
- 23. ELMAH lọc không làm việc
- 24. Gửi email từ Elmah?
- 25. Tôi làm cách nào để chuyển hướng Lỗi 404 trong trang 404 tùy chỉnh bằng Codeigniter?
- 26. Phpmyadmin và Apache 2.4 - 404 lỗi
- 27. Slim Framework luôn trả về lỗi 404
- 28. MVC 4 Vùng API Web 404 Lỗi
- 29. Elmah không đăng nhập ngoại lệ
- 30. Trong Kohana, bạn có thể kích hoạt lỗi 404 không?
Điều này sẽ thực hiện công việc, nhưng tôi không khuyên bạn nên lọc * tất cả * 404 lỗi. Đó là loại hạn chế sức mạnh của ELMAH. Tôi thích ủng hộ cách tiếp cận của Joel nơi bạn thực sự * sửa lỗi *. – senfo
loL! Tôi chỉ đi .. oh yea Tôi chỉ có thể thêm một favicon! – gideon