gpt4 book ai didi

Azure 应用服务劫持 HTTP 状态 500 错误的响应

转载 作者:行者123 更新时间:2023-12-03 03:42:12 24 4
gpt4 key购买 nike

我的应用服务正在按预期工作,我可以访问页面、登录并执行搜索。

如果出现错误,我会在 MVC Controller (不是 API 端点)中放置以下代码

            {
_log.Error("Customer Search Failed", ex);
Response.StatusCode = 500;

return new JsonResult()
{
Data = new { Success = false, Error = "An error occured.", Amount = 0 },
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
ContentEncoding = System.Text.Encoding.UTF8
};
}

在本地,我收到以下响应以及 HTTP 状态代码 500:

{"Success":false,"Error":"发生错误。","Amount":0}

但是,在 Azure 中,我得到了以下响应:

由于发生内部服务器错误,该页面无法显示。

我编写了一个测试应用程序来在我自己的 Azure 环境中重现此问题,这样就不会有任何公司 Azure 资源可能导致此问题,并且我得到了相同的行为。没有应用程序网关、VNet 等类似的东西。应用服务本身有效地查看 500 HTTP 状态代码,然后发送自己的响应与我想要发送的内容。

有谁知道为什么会发生这种情况和/或如何防止这种情况发生?

最佳答案

问题在于 Azure 必须为非 200 HTTP 状态代码设置标准响应。这覆盖了我的 Controller 返回的内容。

我必须通过 web.config 显式删除 500 httpHeader 才能看到我期望的 JSON 响应。

<httpErrors errorMode="Detailed">
<remove statusCode="500" />
</httpErrors>

关于Azure 应用服务劫持 HTTP 状态 500 错误的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70657671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com