C# 使用AMQ8377的事务性IBM MQ 9.0.0.3.NET监视器示例崩溃

C# 使用AMQ8377的事务性IBM MQ 9.0.0.3.NET监视器示例崩溃,c#,.net,transactions,ibm-mq,C#,.net,Transactions,Ibm Mq,我试图从IBM WebSphere 9.0文档中获取事务性.NET监视器示例(请参阅使用.NET监视器,以下文档第675页:) 我成功地编译了一切正常(目标是.NET 2.0),但是当使用runmqdnm运行监视器时,出现了一个异常: runmqdnm -m myqmgr -q myqueue -a TransactionalMonitor.dll -c TransactionalMonitor.Monitor 5724-H72 (C) Copyright IBM Corp. 1994, 20

我试图从IBM WebSphere 9.0文档中获取事务性.NET监视器示例(请参阅使用.NET监视器,以下文档第675页:)

我成功地编译了一切正常(目标是.NET 2.0),但是当使用runmqdnm运行监视器时,出现了一个异常:

runmqdnm -m myqmgr -q myqueue -a TransactionalMonitor.dll -c TransactionalMonitor.Monitor 
5724-H72 (C) Copyright IBM Corp. 1994, 2017.
AMQ8377: Unexpected error 2354 was received by the application. 
我直接在我的MQ服务器上运行该示例,这是一台安装了IBM MQ 9.0.0.3服务器的Windows server 2012 R2计算机

作为参考,我实施的代码:

using System.EnterpriseServices;
using IBM.WMQ;
using IBM.WMQMonitor;

[assembly: ApplicationName("TransactionalMonitor")]

namespace TransactionalMonitor
{
    [Transaction(TransactionOption.Required)]
    public class Monitor : ServicedComponent, IMQObjectTrigger
    {
        [AutoComplete(true)]
        public void Execute(MQQueueManager qmgr, MQQueue queue, MQMessage message, string param)
        {
            System.Console.WriteLine("SETTING COMMIT");
            ContextUtil.SetComplete();
        }
    }
}
当删除事务性内容时,示例工作正常。
我做错了什么?

您没有说您实际使用的IBM MQ版本(您提到的是MQ V9文档)

我将使用您拥有的最早的.NET版本编译您的退出。人们尝试使用最新和最好的,但大多数情况下,它不会起作用

i、 e.对于64位DLL

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\csc.exe /nologo /t:library /platform:x64 /r:System.dll /r:"%MQ_FILE_PATH%\bin\amqmdnet.dll" /out:TransactionalMonitor.dll TransactionalMonitor.cs
仅供参考: 升级到9.0.5版后,问题已修复。 还要确保MSRPC和MSDTC端口未被防火墙阻止。
请参阅,以了解有关该版本的更多信息。

MQ版本为9.0.0.3。我试着像你建议的那样在命令行上编译程序(我不得不添加一个额外的引用amdmdnm.dll),但结果相同<代码>C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\csc.exe/nologo/t:library/platform:x64/r:System.dll/r:“C:\Program Files\IBM\MQ\bin\amqmdnet.dll”/r:“C:\Program Files\IBM\MQ\bin\amqmdnm.dll”/out:TransactionalMonitor.dll TransactionalMonitor.cs如果您使用的是MQ知识中心(又称手册)中的内容,我会在IBM打开一个PMR,并询问他们为什么它不起作用。