.Net:无法从程序集“IBM.XMS.Client.WMQ,版本=8.0.0.7 加载类型 'IBM.WMQ.ManagedCommonServices'

.Net : Could not load type 'IBM.WMQ.ManagedCommonServices' from assembly 'IBM.XMS.Client.WMQ, Version=8.0.0.7

使用 .net 框架 Web API 项目,我们想为我们的 MQ 队列创建一个侦听器(消费者)。我们使用 XMS.Net 因为我们对接收消息的异步方式感兴趣。但是,在创建连接时出现错误:

Could not load type 'IBM.WMQ.ManagedCommonServices' from assembly 'IBM.XMS.Client.WMQ, Version=8.0.0.7, Culture=neutral, PublicKeyToken=d2666ab12fca862b'.

根据 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>