如何避免Ocelot的下游URL中的端口?

时间:2019-08-20 12:02:59

标签: c# heroku ocelot

端口将被添加到下游URL。我想访问在heroku中托管的微服务。需要避免端口。 请帮忙。

它在本地开发环境中工作。但是在Heroku中部署后无法正常工作。

{
  "ReRoutes": [
    {
      "DownstreamPathTemplate": "/api/{catchAll}",
      "DownstreamScheme": "https",
      "DownstreamHostAndPorts": [
        {
          "Host": "catalogapi-pinaki.herokuapp.com"
        }
      ],
      "UpstreamPathTemplate": "/cat-logApi/{catchAll}"

    }

  ],
  "GlobalConfiguration": {
    "BaseUrl": "http://localhost"
  }
}

下游网址应为“ https://catalogapi-pinaki.herokuapp.com/api/CatalogApi/GetAllItems”。

错误: 消息:下游网址为https://catalogapi-pinaki.herokuapp.com:56084/api/CatalogApi/GetAllItems

my Error message

2 个答案:

答案 0 :(得分:0)

您尝试强制使用默认端口吗?您可以使用“ DownstreamHostAndPorts”内部的port属性指定端口,如下所示:

     {
        "ReRoutes": [
            {
            "DownstreamPathTemplate": "/api/{catchAll}",
            "DownstreamScheme": "https",
            "DownstreamHostAndPorts": [
                {
                    "Host": "catalogapi-pinaki.herokuapp.com",
                    "Port": 443
                }
            ],
            "UpstreamPathTemplate": "/cat-logApi/{catchAll}"
            }
        ],
        "GlobalConfiguration": {
            "BaseUrl": "http://localhost"
        }
    }

答案 1 :(得分:0)

我们也面临同样的问题。我们使用FIX 2解决了问题。

FIX 1: services.AddOcelot(Configuration.GetSection(“ OcelotSettings”))                 .AddDelegatingHandler(true);

在OcelotRerouteHandler内,您可以替换URL并构造新的httprequestmessage。 请参阅:https://ocelot.readthedocs.io/en/latest/features/delegatinghandlers.html

修正2:

“ DownstreamPathTemplate”:“ / subdomain / api / {catchAll}”

“主机”:“ catalogapi-pinaki.herokuapp.com”,

如果您有任何子域,请不要将其添加到主机中,请在DownstreamPathTemplate中添加。 对于https,端口可以是443。