1

SL 4 と .net-4 WCF サービスを PollingDuplexHttpBinding で使用しています。サービスを呼び出し、サービスからクライアントを呼び戻すことは正常に機能します。しかし、非同期応答を待たずにサービスを 15 回呼び出すとすぐに、0、1、または 2 つの成功した応答を取得した後に TargetInvocationException を受け取ります。

サービスの私の属性は次のとおりです。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
    ConcurrencyMode = ConcurrencyMode.Multiple)]

これは私のweb.configにあります:

<behaviors>
  <serviceBehaviors>
    <behavior name="RecordProviderServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
      <dataContractSerializer maxItemsInObjectGraph="2147483647" />
      <serviceTimeouts transactionTimeout="05:05:00" />
      <serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500"
       maxConcurrentInstances="2147483647" />
    </behavior>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
<bindings>
  <pollingDuplexHttpBinding>
    <binding name="multipleMessagesPerPollPollingDuplexHttpBinding"
       maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
       maxOutputDelay="00:00:00.200" duplexMode="MultipleMessagesPerPoll" />
  </pollingDuplexHttpBinding>
</bindings>

このように、クライアント側でサービスをインスタンス化します。

var binding = new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll)
                          {
                              MaxBufferSize = 2147483647,
                              MaxReceivedMessageSize = 2147483647
                          };
        _service = new ServiceClient(new InstanceContext(this),
                                            binding,
                                            new EndpointAddress("path to .svc"));

私はWCFが初めてなので、何か見逃しましたか?

4

2 に答える 2

2

TargetInvocationException には、実際の例外を含む InnerException プロパティが必要です。これにより、いくつかの手がかりが得られる場合があります。

于 2010-05-26T14:53:57.303 に答える
0

いいえ、手がかりはありません。リモートサーバーが「見つかりません」というエラーを返します。

asyncの呼び出しは実行されますが、サーバーに送信されることはなく、コールバックですぐにエラーが発生します

于 2012-06-07T12:11:31.057 に答える