Iis 具有net.msmq绑定的wcf服务未从本地队列拾取消息

Iis 具有net.msmq绑定的wcf服务未从本地队列拾取消息,iis,msmq,Iis,Msmq,我正在让客户端应用程序将消息放入名为MsmqService/MsmqService.svc的专用队列 在默认网站下的IIS中,我添加了带有net.msmq绑定的wcf服务 我确保队列设置为事务性 以下是客户端应用程序和wcf上的相关配置部分 <system.serviceModel> <bindings> <netMsmqBinding> <binding name="MsmqBindingNonTransaction

我正在让客户端应用程序将消息放入名为MsmqService/MsmqService.svc的专用队列

在默认网站下的IIS中,我添加了带有net.msmq绑定的wcf服务

我确保队列设置为事务性

以下是客户端应用程序和wcf上的相关配置部分

<system.serviceModel>
    <bindings>
      <netMsmqBinding>
        <binding name="MsmqBindingNonTransactionalNoSecurity" exactlyOnce="false">
          <security mode="None"/>
        </binding>
        <binding name="MsmqBindingNonTransactionalTransportSecurity" exactlyOnce="false">
          <security mode="Transport"/>
        </binding>
        <binding name="MsmqBindingTransactionalTransportSecurity" exactlyOnce="true" receiveErrorHandling="Move">
          <security mode="Transport"/>
        </binding>
      </netMsmqBinding>
    </bindings>
    <services>
      <service name="MsmqService.MsmqService">
        <endpoint address="net.msmq://localhost/private/MsmqService/MsmqService.svc" binding="netMsmqBinding" 
                  bindingConfiguration="MsmqBindingTransactionalTransportSecurity" contract="MsmqContract.IMsmqContract"/>
      </service>
    </services>
  </system.serviceModel>


默认网站的net.msmq协议未启用,wcf服务的协议未启用。这可能是因为您正在使用IIS托管服务。IIS在非活动期间卸载工作进程,这意味着当一个进程到达时,将没有可用的进程来使用消息


要在IIS中承载,请执行以下操作。在windows服务中托管更好,更简单。

这可能是因为您正在使用IIS托管服务。IIS在非活动期间卸载工作进程,这意味着当一个进程到达时,将没有可用的进程来使用消息


要在IIS中承载,请执行以下操作。在windows服务中托管更好,更简单。

是的,我很容易就可以得到一个windows服务版本的需求。如果可能的话,我想让IIS版本也工作。原因是我的主管认为使用windows服务是一种旧式的方式,它要求客户端和服务实际读取和写入队列。而在IIS样式中,所有这些都是隐藏的,看起来客户端正在进行常规wcf调用,而在后台,Windows process activation service代表客户端调用wcf服务中的相应方法。如何唤醒工作进程?我尝试在IIS管理器中选择svc文件上的浏览,但没有任何区别。或者,是否可以在windows服务中调用传统的wcf样式的方法,而不只是让一个通用侦听器侦听消息,并根据消息确定要调用的方法?OK抱歉,重复同一点,但是,你是说在这种情况下使用IIS是两种方法中较小的一种,还是不值得这么麻烦?使用IIS有很好的理由。负载平衡请求、设置SPN等。但如果你只需要msmq listenner的托管容器,那么windows服务就不那么麻烦了。这里有很多东西需要检查:是的,我很容易就能让我的需求的windows服务版本正常工作。如果可能的话,我想让IIS版本也工作。原因是我的主管认为使用windows服务是一种旧式的方式,它要求客户端和服务实际读取和写入队列。而在IIS样式中,所有这些都是隐藏的,看起来客户端正在进行常规wcf调用,而在后台,Windows process activation service代表客户端调用wcf服务中的相应方法。如何唤醒工作进程?我尝试在IIS管理器中选择svc文件上的浏览,但没有任何区别。或者,是否可以在windows服务中调用传统的wcf样式的方法,而不只是让一个通用侦听器侦听消息,并根据消息确定要调用的方法?OK抱歉,重复同一点,但是,你是说在这种情况下使用IIS是两种方法中较小的一种,还是不值得这么麻烦?使用IIS有很好的理由。负载平衡请求、设置SPN等。但是,如果您只需要msmq listenner的宿主容器,那么windows服务就不那么麻烦了。这里有很多东西需要检查: