问题标签 [msmqintegrationbinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
582 浏览

wcf - 如何将 MsmqIntegrationBinding 与非事务性队列一起使用?

这是我的服务合同:

这是我的课

当我尝试使用此代码打开端口时,出现错误

System.InvalidOperationException 发生 Message="合同 'ISecurityMasterChanged' 上的操作 'ValidateCusipInMessage' 配置为 TransactionAutoComplete 设置为 true,TransactionScopeRequired 设置为 false。TransactionAutoComplete 要求 TransactionScopeRequired 设置为 true。" 源="系统.ServiceModel"

这对我来说没有意义,因为如您所见,TransactionAutoComplete 未设置为 true。

0 投票
1 回答
4016 浏览

wcf - 使用 MsmqIntegrationBinding 创建 WCF 服务时出现异常

我的机器是 Windows 7 终极版(64 位)。我已经安装了 MSMQ 并检查了它是否工作正常(为 MSMQ 运行了一些示例代码)。

当我尝试使用 MsmqIntegrationBinding 类创建 WCF 服务时,出现以下异常:

“打开队列时出错:队列不存在或您没有足够的权限执行该操作。(-1072824317, 0xc00e0003)。无法从队列发送或接收消息。请确保已安装 MSMQ 并运行。还要确保队列可以使用所需的访问模式和授权打开。

我在管理员模式下运行 Visual Studio,并使用以下 URL ACL 明确授予自己权限:netsh http add urlacl url= http://+:80/ user=DOMAIN\user

下面是代码:

你能帮忙吗?

0 投票
3 回答
2461 浏览

wcf - 带有 MSMQIntegrationBinding 的 WCF 不会从队列中获取消息

我有一个 BizTalk 2006 应用程序,它有一个使用 MSMQ 的发送端口。

我还有一个带有多个 WCF 服务的 WCF winforms 托管应用程序(在开发环境中,在生产中我使用 Windows 服务作为托管)。

我创建的 WCF 服务之一有一个 MSMQIntegrationBinding(由于 BizTalk 不是 WCF 服务,因此 NetMSMQBinding 是不可能的)。

我看到消息已正确放置在远程队列中,因为我激活了日志选项并且我在日志队列中看到了消息,但是队列为空并且 WCF 服务没有接收消息。

任何人都可以给我一个线索来解决这个问题吗?

(编辑 1):我对这个主题做了更多的研究:

  • 使用 MSMQ 与 BizTalk 2006 R2 通信时,您必须使用 MSMQIntegrationBinding,因为 NetMSMQBinding 仅适用于 WCF 到 WCF
  • 所以我坚持使用 MSMQIntegrationBinding
  • MSMQIntegration 绑定不使用 DataContract 序列化程序。相反,它基于 MsmqMessageSerializationFormat 属性序列化数据。它的默认值为 MsmqMessageSerializationFormat.Xml,这意味着将使用 XmlSerializer。这背后的基本原理是 msmq 集成传输是专门为与本机 MSMQ / System.Messaging 应用程序互操作而设计的
  • 因为 MSMQIntegration 绑定使用普通的旧 XmlSerializer,所以我无法轻松使用 svcutil.exe 来生成我的数据类。所以我必须手动创建我的数据合同类....pfffffffffff

(参考:http ://social.msdn.microsoft.com/Forums/en/wcf/thread/2d48fe90-5c2a-4156-8a3f-2e21d5638fa1和http://www.danrigsby.com/blog/index.php/2008 /03/07/xmlserializer-vs-datacontractserializer-serialization-in-wcf/ )

(编辑2):

我检查了来自 WCF 服务的诊断跟踪数据,消息由于反序列化异常而被丢弃。现在唯一的解决方案是手动创建数据合同类......

(编辑 3):通过使用 xsd.exe 工具而不是 svcutil.exe 我创建了 datacontract 类,所以这里没有手工工作;-) 所以结论是使用 xsd.exe 作为参数的数据协定类在 WCF 服务方法中。这是因为 MSMQIntegrationBinding 强制您使用 XMLSerializer 而不是默认的 DataContractSerializer 将所有数据协定类型设为可序列化。

0 投票
1 回答
560 浏览

wcf - 将工作流服务与 msmqIntegrationBinding 一起使用

我一直在努力设置使用 msmqIntegrationBinding 的工作流服务。我现在遇到的问题是我总是得到这个序列化异常“System.ServiceModel.ProtocolException:反序列化消息时遇到错误。无法接收消息。---> System.Runtime.Serialization.SerializationException:发生错误在反序列化 MSMQ 消息的 XML 正文时。无法接收消息。确保服务合同使用适当的 [ServiceKnownType] 属性进行修饰,或者在 MsmqIntegrationBindingElement 上设置了 TargetSerializationTypes 属性。

据我了解,即使我在服务合同和工作流程中都使用通用类型MsmqMessage<MyMessageType>,序列化帮助程序也找不到任何类型来序列化消息。

MyMessageType是从带有 xsd.exe 的 .xsd 生成的。

更新:问题已解决 我在合同(接口)上为 WCF(Action、ServiceKnownType ...)进行了所有设置,而不是在工作流程中进行。当我把它移到工作流程中时,一切都开始工作了!!

0 投票
1 回答
1986 浏览

c# - WCF MsmqIntegrationBinding - 不从队列中挑选消息

我有一个将消息写入队列 (MSMQ) 的旧客户端。我想使用 WCF 服务从队列中提取 XML 消息。我关注了一些 MSFT 文档并查看了其他示例,但我似乎无法让它工作。服务主机正在启动,但它没有触发我的进程并从队列中挑选消息。最有可能是用户错误,只是不确定是什么。

我可以看到队列中的消息吗?

代码示例:

应用配置:

不知道我做错了什么?

--S

0 投票
0 回答
455 浏览

c# - WCF MsmqIntegrationBinding - 远程队列

我正在使用 WCF MsMqIntegrationBinding,并且正在尝试将消息写入远程队列。感谢 Hugh 和 John Breakwell,我能够让他们只使用正常的消息调用来编写,但是当我尝试将 MsmqIntegrationBinding 与 WCF 一起使用时,我似乎无法将其放入远程队列。我没有收到任何错误消息,只是没有出现。

我的另一个远程队列问题

我添加了 useSourceJournal 来尝试看看这是否有助于识别问题。

有任何想法吗?

将消息写入队列的代码。当队列在本地时工作......只是不是远程:

应用配置:

任何建议表示赞赏。

谢谢,

小号

0 投票
1 回答
1174 浏览

c# - 更改 MsmqIntegrationBinding 的消息编码

我正在尝试使用带有 MsmqIntegrationbinding 的 WCF 在 MSMQ 上发布消息。发送有效,但是当我查看已发送到队列的消息时。编码不正确。

是否可以将消息编码更改为 UTF-16?我已经尝试使用自定义绑定来解决这个问题。这并没有解决我的问题。我粘贴了我在下面使用的自定义绑定。

0 投票
2 回答
1417 浏览

c# - MSMQ, Message is put on queue and disapears but is never picked up by service contract

I have a local private queue. I also have a WCF-service inside an MVC-application that listens to the queue using msmqIntegrationBinding. The problem is that the service contract is never invoked when a message is queued but the message disapears the moment after. The message is not in the poison queue. Here is the config-part where i declare the binding to the queue:

And here is the contract:

And here is the method in the service:

Any suggestions to why the message disapears but does not invoke the service?

0 投票
1 回答
383 浏览

.net - 如何在使用 WCF 的事务性 MSMQ 中将消息显式标记为中毒

我正在使用 MSMQ 版本 4 并且有一个事务队列。我正在使用 WCF 来监听传入消息的队列。

在处理过程中存在对第三方组件的依赖,这些组件可能会出现故障或在较长时间内不可用。为了弥补这一点,我使用 MSMQ 4 ( http://msdn.microsoft.com/en-us/library/aa395218.aspx ) 中的毒消息处理功能来重试消息x次,等待时间为y 。

但是在某些情况下,我知道输入消息无效/中毒。当发生这种情况时,抛出异常将使消息遵循有害消息处理例程,就像所有其他消息一样,具有所有重试和等待时间。但是,当我知道消息已中毒时,我看不到有理由重试并等待配置的时间让中毒队列处理它。

有什么方法可以将消息显式标记为已中毒,这样它就不会遵循配置的重试流程并立即移至中毒队列?

0 投票
1 回答
512 浏览

wcf - 尝试从远程专用队列中提取时,远程计算机不可用

我有一个远程私人队列,我可以毫无问题地写入。我正在尝试创建一个 WAS 托管的 WCF 服务来提取数据进行处理。我需要服务在与队列不同的机器上;我目前将它与写作服务放在同一个站点 - 相同的应用程序池但不同的应用程序。

我的目标队列被调用PersistenceService/Log.svc并且是事务性的和经过身份验证的。我的服务正在运行http://appdev.me.com/PersistenceService/Log.svc。以下包含我的端点和绑定:

我得到的错误如下:

我通过关闭 McAfee 为通信扫清了道路,因此它不会阻塞流量。我已暂时授予对队列的匿名登录访问权限 - 尽管它应该作为我正在写入队列的同一用户进入,并且该用户对队列具有完全权限。

WCF 跟踪不会显示除此错误之外的任何内容。任何关于在哪里看的想法将不胜感激。