2013-03-20 19 views
21

Có một hành động trong bộ điều khiển ASP.NET MVC của tôi trả về dữ liệu JSON với yêu cầu 400 không hợp lệ khi thông số không hợp lệ được chuyển cho hành động.ASP.NET + Azure 400 yêu cầu không trả về dữ liệu JSON

[HttpDelete] 
public ActionResult RemoveObject(string id) { 
    if(!Validate(id)) { 

     Response.StatusCode = (int)HttpStatusCode.BadRequest; 
     return Json(new { message = "Failed", description = "More details of failure" }); 
    } 
} 

Công trình này chạy hoàn hảo dưới IIS hoặc với máy chủ thử nghiệm phát triển được khởi chạy từ Visual Studio. Sau khi dự án đã được triển khai Azure yêu cầu 400 trở lại mà không có dữ liệu JSON. Loại nội dung đã thay đổi thành 'text/html' và 'Bad Request' cho thư.

Tại sao hành vi khác với Azure?

Trả lời

45

Thêm mục sau vào 'web.config' của bạn.

<system.webServer> 
    <httpErrors existingResponse="PassThrough"/> 
</system.webServer> 

Điều này sẽ cho phép lỗi HTTP chuyển qua không bị quấy rối.

+4

Có bất kỳ mối lo ngại bảo mật nào được đính kèm để bật tính năng này không? –

+7

DEAR GOD. Tôi chỉ dành 12 giờ qua để tìm hiểu lý do tại sao các yêu cầu AJAX của tôi không hoạt động. Tôi đã thử mọi thứ từ việc thêm hỗ trợ CORS để tinh chỉnh cài đặt proxy trong ứng dụng Express.js của mình. Đây là giải pháp đơn giản để đảm bảo JSON sẽ được trả lại đúng cách. –

+0

Tôi đã có cùng một vấn đề trên một Amazon AWS dụ chạy IIS 8. Điều này cố định vấn đề tôi đã có và đã được lái xe cho tôi bonkers. – mcdrummerman

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