クライアントアプリにメッセージを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サービスでは有効なプロトコルの下にありました。