MSMQ+;WCF,IIS7-正在记录消息,但从未访问服务

MSMQ+;WCF,IIS7-正在记录消息,但从未访问服务,wcf,iis-7,msmq,Wcf,Iis 7,Msmq,我想是建立了标准。我遵循了:主要是,但根据需要使用了其他来源 到目前为止,情况如下: 客户端发送消息 我在日志消息中看到相应队列的消息 服务似乎从未被调用。我有大量日志记录,可以输出调用的服务的日志和/或服务方法中的错误 我已经关闭了该服务,但该消息仍然会出现在日志消息中-不知道这是为什么 队列:bretrace/bretraceservice.svc(匿名访问,授予完全权限) 客户端Web.config <netMsmqBinding> <binding name="

我想是建立了标准。我遵循了:主要是,但根据需要使用了其他来源

到目前为止,情况如下:

  • 客户端发送消息
  • 我在日志消息中看到相应队列的消息
  • 服务似乎从未被调用。我有大量日志记录,可以输出调用的服务的日志和/或服务方法中的错误
  • 我已经关闭了该服务,但该消息仍然会出现在日志消息中-不知道这是为什么

    队列: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"/>
    
    <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?