【问题标题】:ASP.NET+Azure 400 Bad Request doesn't return JSON dataASP.NET+Azure 400 错误请求不返回 JSON 数据
【发布时间】:2013-03-21 03:15:03
【问题描述】:

在我的 ASP.NET MVC 控制器中有一个动作,当无效参数传递给动作时,它返回带有 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 下的行为不同?

【问题讨论】:

    标签: asp.net-mvc azure


    【解决方案1】:

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

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

    这将允许 HTTP 错误不受干扰地通过。

    【讨论】:

    • 启用此功能是否存在任何安全问题?
    • 亲爱的上帝。我刚刚花了过去 12 个小时试图弄清楚为什么我的 AJAX 请求不起作用。我尝试了从添加 CORS 支持到在我的 Express.js 应用程序中调整代理设置的所有方法。这是确保正确返回 JSON 的简单解决方案。
    • 我在运行 IIS 8 的 Amazon AWS 实例上遇到了同样的问题。这解决了我遇到的问题,让我发疯了。
    • 为什么这不是默认的?! Web API 似乎默认通过。
    • @PoulK.Sørensen 这个答案很好地解释了它:stackoverflow.com/a/31041696/2901207
    猜你喜欢
    • 2015-07-17
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2013-12-25
    • 2014-01-31
    • 1970-01-01
    • 2019-07-28
    • 2019-07-11
    相关资源
    最近更新 更多