c# - .Net:无法从程序集“IBM.XMS.Client.WMQ,版本=8.0.0.7”加载类型“IBM.WMQ.ManagedCommonServices”
问题描述
使用 .net 框架 Web API 项目,我们想为我们的 MQ 队列创建一个侦听器(消费者)。我们正在使用 XMS.Net,因为我们对接收消息的异步方式感兴趣。但是,在创建连接时,我们收到错误:
无法从程序集“IBM.XMS.Client.WMQ,版本=8.0.0.7,文化=中性,PublicKeyToken=d2666ab12fca862b”加载类型“IBM.WMQ.ManagedCommonServices”。
根据http://www-01.ibm.com/support/docview.wss?uid=swg1IC89514,此问题已修复,但我们仍使用 8.0.0.7 版本来解决此问题。
这对于 .Net 框架控制台应用程序工作正常,但对于 Web API 项目它失败了。
作为解决方法,我们还尝试在 app.config 中为 Web API 添加以下内容,但没有运气 -
<appSettings> <add key="MQCSCLASS" value="amqmdnet(IBM.WMQ.ManagedCommonServices)"/> </appSettings>
注意:我的机器上没有安装 MQ 客户端。我们已将 amqmdmsg、amqmdnet、amqmdnm、amqmdnsp、amqmdxcs dll 引用到项目中。
解决方案
如果您使用的是 MQ v9.1,可以尝试以下步骤
1)在环境DEVPATH=&RedistributablePackagePath&\bin中设置如下变量
2) 在应用程序的 App.config 文件中添加绑定重定向标签,因为应用程序是使用较低 MQ 版本编译的,并且必须针对较高版本运行。为此,您可以复制位于“&MQInstallPath&\Tools\dotnet\samples\cs\base”的 NonPrimaryRedirect.config 文件的内容
注意:您必须将 app.config 文件中的“newVersion”属性值修改为您想要运行的版本,在您的情况下它应该是 9.1.0.0,并将“href”修改为可再发行包路径。
3) 将以下标签添加到 app.config 文件中
<runtime>
<developmentMode developerInstallation="true" />
</runtime>
<appSettings>
<add key="MQCSCLASS"
value="amqmdnet(IBM.WMQ.ManagedCommonServices)"/>
</appSettings>
推荐阅读
- javascript - ReactJS无法读取null的属性“名称”
- python - 如何识别仅包含 NULL 值的列?
- javascript - 有没有更好的方法来查找数组中对象的属性
- pine-script - 松树脚本中变量数量的最大限制
- reactjs - 如何将 GraphQL 查询结果作为道具传递给另一个组件 - react-apollo
- typescript - 为什么使用类型参数调用泛型的分布式条件类型与该类型的非泛型版本不同?
- kubernetes-ingress - haproxy-ingress 未对 TCP 服务进行健康检查
- specifications - RISC-V PMP 地址配置
- laravel - 加入子表中最新行的第一行
- c - 如果 scanf 无法获得正确的文字字符,它会返回什么?