ASP.NET + Azure 400错误请求不会返回JSON数据

问题描述:

当我的ASP.NET MVC控制器有一个操作会返回带有400错误请求的JSON数据,当无效参数传递给操作时。ASP.NET + Azure 400错误请求不会返回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" }); 
    } 
} 

这工作完全在IIS下或从Visual Studio推出的开发测试服务器上运行。将项目部署到Azure后,400 Bad Request会返回而不带有JSON数据。内容类型已更改为“text/html”和“错误请求”。

为什么Azure下的行为不同?

将以下条目添加到“web.config”中。

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

这将允许HTTP错误通过un-molested。

+4

是否有任何安全问题关联到启用? – 2013-08-19 13:48:47

+7

亲爱的神。我只花了最近12个小时试图弄清为什么我的AJAX请求不起作用。我尝试了一切,从添加CORS支持到在我的Express.js应用中调整代理设置。这是确保JSON得到正确返回的简单解决方案。 – 2014-02-27 02:25:02

+0

我在运行IIS 8的Amazon AWS实例上遇到同样的问题。这解决了我遇到的问题,并且正在驱动我疯狂。 – mcdrummerman 2015-06-09 06:31:21