1

我有一个客户端应用程序将消息放入名为 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>

我在默认网站的启用协议和 wcf 服务的启用协议下拥有 net.msmq

4

1 回答 1

1

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

最好在 IIS 中托管。更好地托管在 Windows 服务中,更简单。

于 2012-12-04T07:43:39.383 回答