- 在 VS 中使用 NuGet 将 RabbitMQ.Client.5.2.0 程序包更新至 RabbitMQ.Client.6.2.1 版本后,程序连接 RabbitMQ 服务报 “None of the specified endpoints were reachable” 异常问题;
翻译成中文大概的意思就是 “没有指定的端点可访问”;
- 通过网上搜索了大部分重复的文章,大致都指向了 RabbitMQ 权限未配置问题;
当然权限未配置也可能是其中之一
-
这里先是测试了相同的连接配置、放在另外的 Console 程序中 和 新建的 .NET4.8 MVC 程序中 都可以正常连接,只有在前面的 MVC 程序中会出现此异常;
说明这里可以排除 RabbitMQ 权限未配置的可能
-
最后经过各种排除法发现是因为 web.config 中缺少了 System.Threading.Tasks.Extensions 的引用;
附源代码:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
PS:虽然在程序引用中已经添加过 System.Threading.Tasks.Extensions 的引用项了,
但因为 RabbitMQ.Client 程序连接操作是在运行时才引用的 System.Threading.Tasks.Extensions.dll、非编译时,
所以必须在 web.config 中添加 runtime 绑定 System.Threading.Tasks.Extensions 引用项才行哦