ocelot 注入consul 无法匹配路由的问题可能性

最近在搭建微服务,在服务的注册、发现和api的统一管理绕不开 ocelot  和  consul,在没有注入consul时,基础的配置文件能正常转发,但是注入consul 后服务没有按照规定的上游路径来访问的情况(但是按照http://ip:port/consulName/api/user/get 这种方式又能访问呢),这也是我这两天发现的问题,困扰了我两天,百思不得其解,最后才发现问题的所在,这里提供一些导致问题的可能性

1.路由配置头错误(16.1版本后将ReRoutes换成Routes)这个是经常出现的问题

2.ocelot.json注入的配置文件错误(当配置文件内并未出现ocelot官方给定的参数配置时,或者是某个参数配置写错了,这样会造成注入配置文件失效的问题,但是由于是注入了consul所以所有请求的url都会默认为 

 

http://555.66.33.222:5000/VipUser/api/user/get

http://555.66.33.222:5000/identityServic4/api/user/get

所以会出现按照上面的方式仍然能请求服务,但是无法按照你指定的上游目录的地址规则进行替换

可以用这种方式进行测试如果能请求到数据那证明配置文件没有生效 当前前提是上游的url测试不要跟这个完全一样

 )

3.当服务和 Consul 在同一台电脑上时,Ocelot 最终变换成 http://hostname:port/url 的形式进行访问 (这个我是看到别的博客写的,我自己为了排除这种可能把consul和api分服务器部署的 因为一开始也是部署在一台服务器上)

posted on 2023-04-21 19:18  白码一号  阅读(110)  评论(0编辑  收藏  举报