2013-11-21 20 views
7

Làm cách nào để thay đổi đường dẫn lỗi cho bộ điều khiển/hành động của tôi bằng httpErrors?MVC 5 HttpErrors + Bộ điều khiển/Hành động

tôi có mã này:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404"/> 
    <error responseMode="ExecuteURL" statusCode="404" path="Error/HttpRequestError"/> 
</httpErrors> 

Nhưng nó không hoạt động. Hiển thị trang trống và hành động chưa được nhập.

Tôi làm gì sai?

P.S. Tôi biết về một cách khác để sovle lỗi trang tùy chỉnh. Nhưng tôi muốn thử sử dụng nó.

Cảm ơn!

Trả lời

12

tôi giải quyết một vấn đề. Mã này của web.config hoạt động:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404"/> 
    <error statusCode="404" responseMode="ExecuteURL" path="/Error/404"/> 
</httpErrors> 

Bây giờ nhập vào ErrorsController hành động/notfound (được đánh dấu bằng việc định tuyến atribute ActionName-404).

+0

Lưu ý rằng "ExecuteURL" là trường hợp nhạy cảm! – Jester

+0

Cách tiếp cận này không hiệu quả đối với tôi. Tôi nhận được ASP.net "Tài nguyên không thể được tìm thấy." trang lỗi. Tôi có thể truy cập trực tiếp vào trang/Error/404. Tôi đã thử trong IIS Express và IIS. Có lời khuyên nào không? – Sean

+0

@Sean Điều này đúng nhưng thông báo quan trọng là nó sẽ không hoạt động nếu bạn có đường dẫn thư mục ảo hoặc bạn cũng phải điền vào nó. Tôi không biết điều đó vì vậy phải mất nhiều giờ để tìm ra lý do tại sao tôi không thể làm cho nó hoạt động được. – XzaR

1

Tại sao bạn không chỉ cần chuyển hướng url cho 404

<customErrors mode="RemoteOnly" defaultRedirect="~/error"> 
    <error statusCode="404" redirect="~/Error/HttpRequestError" />  
</customErrors 
+2

Chuyển hướng bổ sung không tốt cho CEO. –

+0

@SergeyShoshin CEO là gì? bạn đang giới thiệu SEO? –

+0

Ồ, xin lỗi. Chính xác SEO. –

1

Nếu câu trả lời của Sergey Shoshin không hoạt động.

<httpErrors errorMode="Custom" existingResponse="Replace"> 
     <remove statusCode="404"/> 
     <error statusCode="404" responseMode="ExecuteURL" path="[optional virtual directories...]/Error/404"/> 
</httpErrors> 
Các vấn đề liên quan