2013-08-17 1009 views
12

Tôi đã có trang web MVC trên Azure. Tôi đã viết một hành động điều khiển để đứng trong một tài nguyên, điều đó sẽ trả lại HTTP 404, nhưng nội dung cơ thể phải là một số HTML, nơi tôi giải thích lý do cho 404. Điều này được thực hiện như một hành động tiêu chuẩn đặt Response.StatusCode. Điều này hoạt động tốt tại địa phương, nhưng khi triển khai Azure, tôi không nhận được tùy chỉnh của tôi xem, nhưng chỉ là một thông báo lỗi trong văn bản gốc. Tôi đã xóa <customErrors> trên Azure để gỡ lỗi, với cùng một kết quả.Xử lý 404 trong trang web Azure

Đây là phản ứng thô nhận được khi triển khai tới Azure:

HTTP/1.1 404 Not Found 
Cache-Control: private 
Content-Length: 103 
Content-Type: text/html 
Server: Microsoft-IIS/8.0 
X-AspNetMvc-Version: 3.0 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
X-Powered-By: ARR/2.5 
X-Powered-By: ASP.NET 
Date: Sat, 17 Aug 2013 17:24:19 GMT 

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. 

Cũng rất quan trọng, nếu tôi loại bỏ các tuyến đường phục vụ này, tôi nhận được một tiêu chuẩn trang lỗi NET 404, vì vậy tôi đoán hành động tùy chỉnh của tôi là chạy. Hành động này chỉ là thẳng về phía trước:

[HttpGet] 
    public ActionResult LegacyMedia(string originalUrl) 
    { 
     ViewBag.OriginalUrl = originalUrl; 
     return new ViewResult404() {ViewName = "LegacyMedia"}; 
    } 

    public class ViewResult404 : ViewResult 
    { 
     public override void ExecuteResult(ControllerContext context) 
     { 
      context.HttpContext.Response.StatusCode = (int) HttpStatusCode.NotFound; 
      base.ExecuteResult(context); 
     } 
    } 

Làm cách nào để hiển thị chế độ xem trong khi phản hồi trạng thái HTTP 404 trên Azure?

+1

@PKKG Đó không phải là một bản sao, câu hỏi này không phải về customErrors (tôi đã kích hoạt customErrors, nhưng vô hiệu hóa chúng để thử gỡ lỗi vấn đề). – driis

+0

+1 cho câu hỏi. Tôi tò mò muốn biết cách gỡ lỗi 404. và tôi nghĩ, tôi có hai gợi ý. Bạn có thể sử dụng event_End trong tập tin Global.axax và gợi ý thứ hai là sử dụng Fiddler. –

+0

Nếu tôi chỉ xóa dòng thiết lập mã trạng thái, tôi sẽ có được chế độ xem mong muốn như mong đợi, nhưng (hiển nhiên) với mã trạng thái 200. Tôi nhận được phản hồi thô như được đăng ở trên từ Fiddler – driis

Trả lời