1

我认为标准设置。我关注了:http: //blogs.msdn.com/b/tomholl/archive/2008/07/12/msmq-wcf-and-iis-getting-them-to-play-nice-part-1.aspx主要是,但根据需要使用其他来源。

到目前为止,发生了什么:

  1. 客户端发送消息
  2. 我在日志消息中看到相应队列的消息
  3. 服务似乎从未被调用。我有大量的日志记录可以输出关于服务调用和/或服务方法错误的日志。

我已经关闭了服务,消息仍然出现在日志消息中 - 不知道为什么会这样。

队列:bretrace/bretraceservice.svc(匿名访问,授予完全权限)

客户端 Web.config

<netMsmqBinding>
    <binding name="MsmqBreTrace" receiveErrorHandling="Move">
        <security mode="None" />
    </binding>
</netMsmqBinding>

<endpoint address="net.msmq://wcfserver/private/bretrace/bretraceservice.svc" binding="netMsmqBinding"
    bindingConfiguration="MsmqBreTrace" name="MsmqBreTraceService"
    contract="C.BusinessRuleController.Services.BoschProxy.Trace.IQueuingTraceContract"/>

服务 Web.config

<bindings>
    <netMsmqBinding>
        <binding name="MsmqBreTraceReader" receiveErrorHandling="Move">
            <security mode="None" />
        </binding>
    </netMsmqBinding>
</bindings>
<services>
    <service name="C.BusinessRuleController.Services.QR.BreTraceService">
        <endpoint address=""
            binding="netMsmqBinding" bindingConfiguration="MsmqBreTraceReader"
            contract="C.BusinessRuleController.Services.BoschProxy.Trace.IQueuingTraceContract" />
    </service>
</services>

我还激活了 system.diagnostics,它似乎正在调用该服务,在我看到的活动下:

  • “过程操作:'http://tempuri.org/IQueuingTraceContract/LogTrace'。” 我不确定 tempuri.org 是否有问题?
  • “执行 C.BusinessRuleController...” 作为另一个活动。

4

1 回答 1

0

有几件事为我解决了这个问题:

首先,我必须在绑定中设置 security mode='transactional'

<netMsmqBinding>
    <binding name="MsmqBreTrace" receiveErrorHandling="Move">
        <security mode="Transactional" />
    </binding>
</netMsmqBinding>

其次,我必须安装 MSMQ Active Directory Integration - 我不必实际启用它,但即使不使用它也必须安装它。这是最让我震惊的,我不想要广告集成,所以我认为我不需要它。原来我错了。

于 2013-02-12T05:56:51.560 回答