Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在自托管WCF/MSMQ中处理中毒队列消息_.net_Wcf_Msmq_Poison Queue - Fatal编程技术网

.net 在自托管WCF/MSMQ中处理中毒队列消息

.net 在自托管WCF/MSMQ中处理中毒队列消息,.net,wcf,msmq,poison-queue,.net,Wcf,Msmq,Poison Queue,我正在尝试设置一个WCF服务来处理有毒队列消息,但我很难做到这一点。我将WCF服务配置为: <endpoint address="net.msmq://serverip/private/services/eventservice.svc;poison" binding="netMsmqBinding" bindingConfiguration="MsmqBindingTransactionalSecurityPoisonHandling" contract=

我正在尝试设置一个WCF服务来处理有毒队列消息,但我很难做到这一点。我将WCF服务配置为:

<endpoint address="net.msmq://serverip/private/services/eventservice.svc;poison"
    binding="netMsmqBinding" 
    bindingConfiguration="MsmqBindingTransactionalSecurityPoisonHandling"   
    contract="App.IEventService" />

我的绑定配置是:

<binding name="MsmqBindingTransactionalSecurityPoisonHandling" exactlyOnce="true" durable="true">
        <security mode="None" />
</binding>

但是,我遇到了以下错误:

无法检测队列是否为事务性队列

转换“serverip\private$\services/eventservice.svc;将“毒药”队列路径名称改为格式名称:指定的队列路径名称无效。(-1072824300,0xc00e0014)。排队通道上的所有操作均失败。请确保队列地址有效。安装MSMQ时必须启用Active Directory集成,并且可以访问它

队列路径名有效,并且启用了MSMQ与Active Directory集成,因此我不明白为什么会发生此错误

编辑:我的有毒队列处理服务的定义如下:

<ServiceBehavior(AddressFilterMode:=AddressFilterMode.Any, InstanceContextMode:=InstanceContextMode.Single, ConcurrencyMode:=ConcurrencyMode.Single)>
Public Class EventService
    Implements IEventService

    <OperationBehavior(TransactionScopeRequired:=True, TransactionAutoComplete:=True)>
    Public Sub ProcessEvent(msg As EventMessage) Implements IEventService.ProcessEvent

    End Sub
End Class

公共类事件服务
实现IEventService
Public Sub-ProcessEvent(消息作为EventMessage)实现IEventService.ProcessEvent
端接头
末级

好的,如果我理解的话,您的原始netMsmq毒药队列地址正在以某种方式“翻译”为字符串,然后无法解析为格式名称(根据错误消息)

我可以问一下您是否正在使用事务队列吗?诚实的问题,但您已经在绑定配置中指定了事务语义,它还必须与服务操作实现中适当的OperationBehaviorAttribute相结合,当然还有事务队列

此外,您是否在服务实现上实现了AddressFilterMode?对于毒药消息处理,这应该设置为“Any”,我相信这会影响队列地址解析,并且毒药消息处理程序需要这样做

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public MyPoisonHanderImplementation : IMyPoisonHandler
{...}

另外,我有点困惑,当您只使用私有队列时,为什么需要启用广告集成?或者这是另一个原因导致的要求?

根据错误消息,队列路径中混合了正向斜杠和反向斜杠。这是打字错误吗?MSMQ上的WCF只使用正斜杠;它被翻译了。例如,我正在成功地请求通过:net连接到主队列的服务。msmq://serverip/private/services/eventservice.svc. 这只是我不知道的有毒子队列连接;我在上面包含了我的服务实现的shell。谢谢。@BrianMains——那我就难堪了——道歉真是帮不上忙。仍然不确定为什么需要广告整合?是的,这很奇怪,但至少你审查过我的方法应该没有问题,所以我必须在我这方面做一些额外的验证。谢谢