106 字
1 分钟
ocelot 新版本获取下游服务地址变更
错误原因:Ocelot
新版本在 Consul
获取服务地址时默认返回的是节点名称 node != null ? node.Name : entry.Service.Address
解决方案:继承默认的 DefaultConsulServiceBuilder
,重写 GetDownstreamHost
方法。
public class ConsulServiceBuilder : DefaultConsulServiceBuilder
{
public ConsulServiceBuilder(Func<ConsulRegistryConfiguration> configurationFactory, IConsulClientFactory clientFactory, IOcelotLoggerFactory loggerFactory) : base(configurationFactory, clientFactory, loggerFactory)
{
}
protected override string GetDownstreamHost(ServiceEntry entry, Node node)
{
return entry.Service.Address;
}
}