1

クライアントアプリにメッセージをMsmqService/MsmqService.svcという名前のプライベートキューにドロップさせています。

IISのデフォルトのWebサイトで、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は、デフォルトのWebサイトでは有効なプロトコルの下にあり、wcfサービスでは有効なプロトコルの下にありました。

4

1 に答える 1

1

これは、IISを使用してサービスをホストしていることが原因である可能性があります。IISは、非アクティブな期間中にワーカープロセスをアンロードします。これは、メッセージが到着したときにメッセージを消費するために使用できるプロセスがないことを意味します。

IISでホストすることは、せいぜいコンパイルされます。Windowsサービスでホストする方が、はるかに簡単です。

于 2012-12-04T07:43:39.383 に答える