Sử dụng ASP.NET MVC 5, tôi muốn trả lại mã trạng thái HTTP thích hợp cho các trường hợp khác nhau (401 cho người dùng không được xác thực, 403 khi người dùng không có quyền đối với một số tài nguyên, v.v. .), hơn là xử lý chúng trong jQuery.HttpStatusCodeResult (401) trả về "302 Tìm thấy"
Nhưng vấn đề là, khi tôi cố gắng trả lại 401, nó luôn trả về "302: Found". Bí quyết cho mã trạng thái tùy chỉnh là gì và tại sao điều này không hoạt động?
public ActionResult My()
{
if (User.Identity.IsAuthenticated == false)
{
return new HttpStatusCodeResult(401, "User is not authenticated.");
// Returns "302: Found"
}
// ... other code ...
}
EDIT 1: Thú vị bit:
Nếu tôi thay thế 401 với 404 như thế này:
return new HttpNotFoundResult("User is not authenticated.");
Sau đó, nó thực sự mang đến cho 404 và jQuery có thể nắm bắt được vấn đề. Tuy nhiên nó không phải là một giải pháp thanh lịch vì mã lỗi khác nhau.
EDIT 2: 302 là không tốt đối với tôi, như kết quả sẽ được sử dụng trong jQuery.get().fail()
, nhưng 302 sẽ không triger fail()
bạn có đang sử dụng xác thực biểu mẫu không? –
hãy xem xét điều này: http://stackoverflow.com/questions/10348111/custom-error-message-with-httpstatuscoderesult-jquery – mrtig
mrtig: Tôi đã nhìn thấy điều này trước đây, nhưng không giúp ích khi nó nói nó được giải quyết bằng cách sử dụng IIS express. Tôi sử dụng IIS express, vẫn còn tôi có vấn đề. –