我是IBM WebSphere MQ的新手。我正在尝试使用IBM.XMS dll在Dynamics CRM的插件中连接到MQ并获得低于错误。
例外:致命错误。无法初始化XMSFactoryFactory 堆栈跟踪:在IBM.XMS.XMSFactoryFactory.GetXmsFactory(Int32 connectionType) 在IBM.XMS.XMSFactoryFactory.GetInstance(Int32 connectionType) 在Mta.ACBPS.Mta.Crm.Plugins.PostMtaMessageCreate.GetConnection(IOrganizationService服务,mta_mqconnection mqConnectionRecord,ITracingService tracer) 内部异常:System.InvalidCastException:无法将类型为“IBM.XMS.Client.Impl.XmsFactoryFactoryImpl”的对象强制转换为“IBM.XMS.XMSFactoryFactory”。
源代码是
var connectionfactory = (IConnectionFactory)null;
try
{
var factoryfactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
connectionfactory = factoryfactory.CreateConnectionFactory();
connectionfactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, mqConnectionRecord.mta_name);
connectionfactory.SetStringProperty(XMSC.WMQ_HOST_NAME, mqConnectionRecord.mta_HostIP);
connectionfactory.SetIntProperty(XMSC.WMQ_PORT, int.Parse(mqConnectionRecord.mta_Port));
connectionfactory.SetStringProperty(XMSC.WMQ_CHANNEL, mqConnectionRecord.mta_Channel);
connectionfactory.SetIntProperty(XMSC.WMQ_BROKER_VERSION, XMSC.WMQ_BROKER_V2);
connectionfactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
}
答案 0 :(得分:1)
显而易见的问题是:您是安装了MQ客户端还是仅从某处复制了IBM.XMS.DLL程序集并使用它? IBM.XMS依赖于许多其他程序集。单独使用IBM.XMS程序集无济于事。
IBM XMS .NET客户端与MQ客户端捆绑在一起。所以你必须安装MQ客户端。您可以从here下载最新的MQ客户端。
安装MQ客户端后,请参阅\ Tools \ dotnet \ samples \ cs \ xms目录中的示例。
根据评论进行更新
我想知道您是否需要在插件中引用其他XMS程序集,以便CRM找到那些依赖程序集。作为起点,您可以参考IBM.XMS.Client.Impl
和IBM.XMS.Impl
,看看它是否有帮助。
答案 1 :(得分:0)
这是固定的。我正在引用IBM.XMS并使用ILMerge将程序集与我的插件代码dll合并。我认为IMLerge和现在的插件正在使用GAC中为IBM.XMS安装的程序集。