Я пытаюсь использовать Ocelot для перенаправления запроса из веб-приложения, использующего HttpClient, на Asp. Net Базовый WebAPI, работающий в Docker. Оцелот также работает в контейнере. Оба контейнера (ProductManagementAPI и Ocelot) создаются с использованием docker -compose.
Ниже представлен мой ocelot. json file:
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/product/product",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "productmanagementapi",
"Port": "8100"
}
],
"UpstreamPathTemplate": "/product/product",
"UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete", "Options" ],
"Priority": 1
}
],
"GlobalConfiguration": {
}
После запуска "docker -compose Команда «вверх», когда я непосредственно просматриваю: http://localhost: 8100 / api / product / product , я получаю желаемый ответ.
Но когда я делаю запрос из Webapp, работающего локально, чтобы получить В ответ на API, работающий в контейнере через шлюз Ocelot Api (также работающий в контейнере), я получаю следующую ошибку:
ocelotapigateway_1 | requestId: 0HLTAOJJEL03J: 00000001, previousRequestId: нет идентификатора предыдущего запроса, сообщение: 403 (Запрещено) код состояния, uri запроса: http://productmanagementapi: 8100 / api / product / product
Даже если я заменю хост Downstream в файле ocelot. json на «localhost», я получаю сообщение об ошибке.
Я не включил авторизацию ни в одном из вышеуказанных приложений.
Когда Я напрямую вызываю WebAPI, работающий в docker, используя HttpClient из WebApplication, он работает. Но при размещении шлюза Ocelot между ними он перестает работать.