为啥对部署到服务器的服务的调用不返回问题详细信息对象?

Posted

技术标签:

【中文标题】为啥对部署到服务器的服务的调用不返回问题详细信息对象?【英文标题】:Why does a call to a service deployed to a server not return a Problem Details object?为什么对部署到服务器的服务的调用不返回问题详细信息对象? 【发布时间】:2021-09-17 03:04:14 【问题描述】:

我有一个服务(称为 B),我的服务(称为 A)调用它来获取数据。它为查找提供一个 GUID 标识符。如果服务未能找到信息,它会返回一个带有 404 状态的问题详细信息对象。


"type": "https://tools.ietf.org/html/rfc7231#section-6.5.4",
"title": "Not Found",
"status": 404,
"traceId": "8000278f-0000-9d00-b63f-84710c7967bb"

我可以在本地运行我的服务,调用服务 B 并获得预期的结果。我可以在部署到开发服务器的服务 B 上使用 Swagger UI 并获得预期的结果。

但是,当我的服务部署到开发服务器并为服务 B 执行调用时,我得到以下信息。

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

这就是它返回的字面意思。它不在问题详细信息对象中。这会导致 JSON 解析错误。

我不知道为什么它在服务器上而不是在本地这样做。这有发生在其他人身上吗?你做了什么来解决它?是否有某种 IIS 设置会导致这种情况?

感谢您的意见。

【问题讨论】:

如果您需要一些帮助,您必须发布这两个服务的代码。 【参考方案1】:

问题原来是配置错误。在部署期间,在 appsettings.json 文件中设置了正确的 URL。但是,URL 没有以 / 字符结尾。这导致指向不存在资源的错误 URL。因此纯文本中的错误。我通过确保从配置文件中读取的 URL 以 / 字符结尾来纠正此问题。

它在本地工作的原因是 URL 设置有尾随 '/' 字符。部署通过读取环境设置文件派生 URL,然后根据找到的内容设置值。

【讨论】:

以上是关于为啥对部署到服务器的服务的调用不返回问题详细信息对象?的主要内容,如果未能解决你的问题,请参考以下文章

高分求助!!!C#为啥程序在本地运行没有问题,但部署到服务器上后就不行了呢

为啥这个对 C# 方法的 jquery ajax GET 调用不起作用?

不能对不可变值使用变异成员:函数调用返回不可变值 - 不确定为啥值是不可变的

数据服务器到 iPhone 并返回

WebBrowser 对 COM 组件的调用返回了错误 HRESULT E_FAIL。

如何自动调用 RESTful Web 服务