API 抛出错误的响应代码 500 内部错误而不是 204
The API is throwing wrong response code 500 internal error instead 204
我们观察到 API 响应代码的行为突然发生变化。
在我的本地系统中,它正在重新调整 204 - No Content fine。但是,在部署到 Azure App Service(运行 ASP.NET 4.8 堆栈后),它返回 500 内部错误(请求来自 Post man 工具,如附图所示)
请注意:它之前使用相同的代码在应用程序服务中运行
我们可以在 Web API(我使用的是 4.6.1 FW)中使用下面的简单代码重现该问题
怀疑是由于某些通行证级别发生了变化。 如果有人遇到类似问题或有任何解决此问题的线索,请分享。
使用下面的代码 Web API 行重现问题并触发请求 Local vs App Service 很简单(如果有人可以重现以了解我正在尝试的真正问题,那就太好了传达。谢谢。
代码段
本地:无问题
部署到应用服务后出现问题
这个问题的根源: 经过与 Microsoft Teams 的大量分析和讨论,了解到最近在 Azure 前端引入了更高的安全合规性。此更改强制执行 内容不应 return 使用 HTTP 204。(参考来源:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
为什么它更早工作:因为它是兼容的,即使我们 return 之前 204 响应中的内容也没有问题。
缓解
- 方法一:
避免 return 使用 204 响应发送内容。
- 方法二:
禁用安全合规性作为快速修复并慢慢更新您的代码,不要 return 包含 204 响应的内容。
我们观察到 API 响应代码的行为突然发生变化。 在我的本地系统中,它正在重新调整 204 - No Content fine。但是,在部署到 Azure App Service(运行 ASP.NET 4.8 堆栈后),它返回 500 内部错误(请求来自 Post man 工具,如附图所示)
请注意:它之前使用相同的代码在应用程序服务中运行
我们可以在 Web API(我使用的是 4.6.1 FW)中使用下面的简单代码重现该问题
怀疑是由于某些通行证级别发生了变化。 如果有人遇到类似问题或有任何解决此问题的线索,请分享。
使用下面的代码 Web API 行重现问题并触发请求 Local vs App Service 很简单(如果有人可以重现以了解我正在尝试的真正问题,那就太好了传达。谢谢。
代码段
本地:无问题
部署到应用服务后出现问题
这个问题的根源: 经过与 Microsoft Teams 的大量分析和讨论,了解到最近在 Azure 前端引入了更高的安全合规性。此更改强制执行 内容不应 return 使用 HTTP 204。(参考来源:https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
为什么它更早工作:因为它是兼容的,即使我们 return 之前 204 响应中的内容也没有问题。
缓解
- 方法一: 避免 return 使用 204 响应发送内容。
- 方法二: 禁用安全合规性作为快速修复并慢慢更新您的代码,不要 return 包含 204 响应的内容。