0

MSMQ バインディングを備えた WCF サービスがあり、正常に動作しています。その時点でメッセージが MSMQ キューに入るたびに。キューを処理しており、メッセージがキューから削除されています。しかし、操作契約を呼び出しておらず、メッセージに関する情報を取得していません。

操作コントラクトを直接呼び出す方法はありますか、それとも別の方法がありますか? 私は WAS と MSMQ で wcf サービスをホストしています。以下は私の web.config 設定です。

<system.serviceModel>
  <bindings>
      <netMsmqBinding>
          <binding name="WCFQNonTransactional" exactlyOnce="false">
              <security mode="None"/>
          </binding>
      </netMsmqBinding>
  </bindings>
  <services>
      <service behaviorConfiguration="MyWCFService.MSMQReceiverServiceBehavior" name="MyWCFService.MSMQReceiverService">
          <endpoint address="http://localhost:90/MSMQReceiverService.svc"
                    binding="wsHttpBinding"
                    contract="MyWCFService.IMSMQReceiverService" name="mymsmq">
              <identity>
                  <dns value="localhost" />
              </identity>
          </endpoint>

          <endpoint address="net.msmq://localhost/private/Mywcfservice/msmqreceiverservice.svc"
                    binding="netMsmqBinding" bindingConfiguration="WCFQNonTransactional"
                    contract="MyWCFService.IMSMQReceiverService" />
      </service>
  </services>
  <behaviors>
      <serviceBehaviors>
          <behavior name="MyWCFService.MSMQReceiverServiceBehavior">
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
          </behavior>
      </serviceBehaviors>
  </behaviors>

4

1 に答える 1

0

操作コントラクトが呼び出されていない場合、これはメッセージをキューから取り出す際に問題があることを意味します。キューから取り出されたメッセージごとに、オペコードを呼び出す必要があります。

まず、トランザクションキューを使用していることを確認します。エラーがない場合は、メッセージが失われるためです。

次に、クライアントとサーバーのバインディングでジャーナルリングを有効にすると、メッセージを追跡できるようになります。

于 2012-06-20T14:25:03.653 に答える