2013-07-08 36 views
7

Theo Microsoft's documentation, đối với nội dung tĩnh (tức là HTML), web.config phải đọc responseMode="File" cho từng lỗi.lỗi web.config không thành công với responseMode = "Tệp"

Hiện nay, web.config của tôi bao gồm

<httpErrors errorMode="Custom"> 
    <!-- remove statusCodes --> 
    <error statusCode="404" path="/error/404.html" responseMode="ExecuteURL" /> 
</httpErrors> 

này trả về trang lỗi tùy chỉnh chính xác, nhưng trả về một mã trạng thái OK 200.

Khi tôi thay đổi "ExecuteURL" thành "Tệp", máy chủ của tôi trả về 404, nhưng trang lỗi tùy chỉnh không được hiển thị. Thay vào đó, tôi nhận được thông báo "Tài nguyên bạn đang tìm kiếm đã bị xóa, tên của nó đã thay đổi hoặc tạm thời không khả dụng."

Web.config phải đọc như thế nào, để trả lại tệp tĩnh, nhưng cũng là 404?

Edit: loại bỏ <customErrors> câu hỏi sau khi biết rằng thẻ đó là cho IIS < = 6,0

Trả lời

19

Tôi đã figthing với chính xác cùng một vấn đề thời gian khá dài. Bây giờ tôi phát hiện ra một cách tình cờ rằng vấn đề là trong ký tự gạch chéo.

này đang làm việc cho tôi - không có bắt đầu giảm và sử dụng \ thay vì/

<error statusCode="404" path="Static\WebServer\PageNotFound.htm" responseMode="File" /> 
+0

Thật vậy, nếu bạn có một hàng đầu dấu gạch chéo nó sẽ không hoạt động và sẽ chỉ trả lại generic trang lỗi nội bộ. Tôi đã làm đường dẫn = "\ PageNotFound.html" và nó thực sự chỉ cần đường dẫn = "PageNotFound.html". – jakejgordon

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