Почему вызов службы, развернутой на сервере, не возвращает объект Сведений о проблеме?

#c# #rest #http-status-code-404

Вопрос:

У меня есть служба (назовите ее 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 и получить ожидаемые результаты. Я могу использовать пользовательский интерфейс Swagger в службе B, развернутой на сервере разработки, и получить ожидаемые результаты.

Однако, когда моя служба развертывается на сервере разработки и выполняется вызов службы B, я получаю следующее.

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

Это буквально то, что он возвращает. Это не относится к объекту «Детали проблемы». Это затем приводит к ошибке синтаксического анализа JSON.

Я в недоумении, почему он делает это на сервере, но не локально. Случалось ли это с кем-нибудь еще? Что вы сделали, чтобы решить эту проблему? Есть ли какие-то параметры IIS, которые могли бы вызвать это?

Спасибо за ваш вклад.

Комментарии:

1. Если вам нужна помощь, вы должны опубликовать код обеих служб.

Ответ №1:

Проблема оказалась ошибкой конфигурации. Во время развертывания в файле appsettings.json был задан правильный URL-адрес. Однако URL-адрес не заканчивался символом/. Это привело к неправильному URL-адресу, указывающему на несуществующий ресурс. Таким образом, ошибка в обычном тексте. Я исправил это, убедившись, что URL-адрес, считываемый из файла конфигурации, заканчивается символом/.

Причина, по которой он работал локально, заключается в том, что URL-адрес был задан с завершающим символом»/». Развертывание получает URL-адрес, считывая файл параметров среды, а затем устанавливает значения на основе того, что оно находит.