IIS httpErrors ExecuteURL nối thêm chuỗi truy vấn lạ như 500; http: //mysite.com/fails-page vào URL mục tiêu


8

Tôi đã nhận thấy hành vi kỳ lạ trong các trang lỗi IIS. Tôi đã có thiết lập này:

<httpErrors errorMode="Custom" existingResponse="Replace">
 <remove statusCode="500" />
  <error statusCode="500" responseMode="ExecuteURL" path="/error-page" />
</httpErrors>

Đôi khi xảy ra lỗi ASP.NET do chuỗi truy vấn quá dài, ngay lập tức lỗi thứ hai xảy ra trong khi cố gắng thực thi URL trang lỗi. Tôi đã theo dõi vấn đề với thực tế là IIS sẽ thêm url gốc vào url của trang lỗi như:

Original: http://example.com/someurl?id=some_very_long_query_string_causing_security_exception
Error: /error-page?500;http://example.com/someurl?id=some_very_long_query_string_causing_security_exception

Đây là một vấn đề rất lớn. Nếu url ban đầu không thành công vì có chuỗi truy vấn quá lâu thì trang lỗi với nội dung được nối cũng bị lỗi vì nó có chuỗi truy vấn thậm chí còn dài hơn!

Tôi tin rằng đây là lỗi ngu ngốc nhất trong IIS. Có ai biết nếu có một số bản vá của gói dịch vụ cho điều đó? Trường hợp xấu nhất nếu không có gì được khắc phục ngay bây giờ, có cách nào để vô hiệu hóa hành vi này hoặc bất kỳ thủ thuật nào để ngăn chặn IIS thêm các nội dung không được yêu cầu vào trang lỗi không? Bởi vì nó phá vỡ toàn bộ cơ chế trang lỗi tùy chỉnh.


Thưa ông, tôi đã đối mặt với vấn đề tương tự. Bạn đã giải quyết nó?
Denis

1
+1 Tôi đã hỏi câu hỏi tương tự trên StackOverflow tại đây . Rất thích một câu trả lời.
Muhammad Rehan Saeed

Câu trả lời:


1

Thêm dấu gạch chéo vào đường dẫn (ví dụ: path = "/ error-page /") sẽ dừng mã lỗi và URL được thêm vào, lưu ý rằng nó sẽ giữ URL không thành công ban đầu, ví dụ:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.