Tôi đã có customErrors đặt trong web.config của tôiASP.NET MVC Tuỳ chỉnh trang Lỗi (StatusCode 404 ném 500)
<customErrors mode="On" defaultRedirect="/Error/GeneralError">
<error statusCode="404" redirect="/Error/NotFound"/>
</customErrors>
này hoạt động tốt tại địa phương. Một 404 ném 404. Trên lưu trữ được chia sẻ nó ném lên trang 404 máy chủ tiêu chuẩn trừ khi tôi đặc biệt thiết lập 404 để trỏ đến/Lỗi/NotFound. Đó là tốt. Bây giờ nó sẽ hiển thị trang 404 tùy chỉnh ngoại trừ mã trạng thái phản hồi là 200. Vì vậy, nếu tôi cố gắng trả lời Response.StatusCode = 404; trong hành động NotFound của tôi trong ErrorController như thế này:
public class ErrorController : Controller
{
public ActionResult NotFound()
{
Response.StatusCode = 404;
return View();
}
}
máy chủ ném mã trạng thái 500 Lỗi máy chủ nội bộ nhưng trang GeneralError của tôi không hiển thị, chỉ một trang trắng trống không có nguồn.
Tôi đã thử nhiều kết hợp khác nhau nhưng tôi dường như không thể tìm cách làm cho nó hiển thị trang 404 tùy chỉnh của tôi cùng với phản hồi 404.
Bất kỳ ý tưởng nào?
Có bất kỳ tác hại nào trong việc cho phép ứng dụng phản hồi với 200 OK trên NotFound không? Có thể có vấn đề với công cụ thu thập dữ liệu web hoặc công cụ quản trị trang web của google. – mark123
Chỉ là một ý nghĩ. Nó sẽ không được tốt hơn để sử dụng: defaultRedirect = "~/Lỗi/GeneralError" và chuyển hướng = "~/Lỗi/NotFound" với các ứng dụng MVC. (Lưu ý ~ ở đầu chuỗi. Thao tác này sẽ ánh xạ tới cơ sở của ứng dụng chứ không phải cơ sở của miền ... như bạn đã biết.) – jwwishart