MSMQ+;WCF,IIS7-正在记录消息,但从未访问服务
我想是建立了标准。我遵循了:主要是,但根据需要使用了其他来源 到目前为止,情况如下:MSMQ+;WCF,IIS7-正在记录消息,但从未访问服务,wcf,iis-7,msmq,Wcf,Iis 7,Msmq,我想是建立了标准。我遵循了:主要是,但根据需要使用了其他来源 到目前为止,情况如下: 客户端发送消息 我在日志消息中看到相应队列的消息 服务似乎从未被调用。我有大量日志记录,可以输出调用的服务的日志和/或服务方法中的错误 我已经关闭了该服务,但该消息仍然会出现在日志消息中-不知道这是为什么 队列:bretrace/bretraceservice.svc(匿名访问,授予完全权限) 客户端Web.config <netMsmqBinding> <binding name="
<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"/>
<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>
服务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"/>
<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…”作为另一个活动
- 有两件事帮我解决了这个问题:
首先,我必须在绑定中设置安全模式='transactional'
<netMsmqBinding>
<binding name="MsmqBreTrace" receiveErrorHandling="Move">
<security mode="Transactional" />
</binding>
</netMsmqBinding>
第二,我必须安装MSMQ Active Directory Integration—我不必实际启用它,但即使在未使用它时也必须安装它。这是最让我头疼的,我不想要广告整合,所以我想我不需要它。结果证明我错了。您启用了端到端跟踪吗?我已经启用了它——但老实说,我很难理解它的头绪。我有3个事件-消息来自网络(事件id 4)、消息放入队列(事件id 1)和消息接收(事件id 2)。我看不出这是在哪里显示什么服务正在接收消息,如果每条消息有三个事件,这通常表示一切正常。你想过使用事务性队列吗?@hugh他们在事务性队列中。我在应该接收消息的服务方法中有各种各样的日志记录,但没有任何记录。服务器上的WCF跟踪呢?我认为唯一错误的是,当您收到消息时,您遇到了某种序列化/格式问题。我还注意到您正在使用netMsmqBinding。因此,我假设您的客户也是WCF?