2

現在、SilverLight 4.0 で PollingDuplex Binding を使用して Duplex WCF サービスを構築しようとしています。

私のサービスは、接続されたクライアントごとに 1 秒ごとにいくつかのコールバック メソッドを呼び出します。ただし、2 つのクライアントが接続された後、新しいクライアントは「... にあるサービスがビジー状態です」と表示されました。

私のサービスはこの動作を使用します:

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

WCF バインディング構成:

<pollingDuplexHttpBinding>
  <binding name="" maxOutputDelay="00:00:01" serverPollTimeout="00:05:00"
    inactivityTimeout="02:00:00" duplexMode="MultipleMessagesPerPoll"
    maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
    maxReceivedMessageSize="2147483647">
    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
      maxArrayLength="2147483647" maxBytesPerRead="2147483647"
      maxNameTableCharCount="2147483647" />
  </binding>
</pollingDuplexHttpBinding>

サービスの動作:

<behavior name="Push">
  <serviceMetadata httpGetEnabled="true"/>
  <serviceDebug includeExceptionDetailInFaults="true"/>
  <serviceThrottling maxConcurrentCalls="2147483647"
    maxConcurrentInstances="2147483647" 
    maxConcurrentSessions="2147483647"/>
</behavior>

サービス定義:

<services>
  <service name="PushService" behaviorConfiguration="Push">
    <endpoint address="" binding="pollingDuplexHttpBinding"
      contract="PushService"/>
    <endpoint address="mex" binding="mexHttpBinding" 
      contract="IMetadataExchange"/>
  </service>
</services>

助けはありますか?この例外は私を夢中にさせます!

4

2 に答える 2

0

この問題は、System.Netの「maxconnection」デフォルト値2に関連している可能性があると思います。サービスとクライアントの構成に次の構成を追加して、結果が改善されるかどうかを確認できますか?

上記の構成はクライアントアプリケーションに適用されますが、PollingDuplexは、サービスがコールバック操作のクライアントとして動作するデュプレックスチャネルであることを忘れないでください。

上記の構成が必要な理由を説明しているWenlongの美しいブログ http://blogs.msdn.com/b/wenlong/archive/2009/02/08/why-only-two-concurrent-requests-for-をご覧ください。 load-testing.aspx

于 2011-03-24T21:10:33.533 に答える
0

1 つの Internet Explorer を使用する場合、PollingDuplex ソフトウェアには 10 クライアントの制限があることに気付きました。Windows 2008 Server R2 マシンと Web.config に多くの設定があるため、制限はまだありました。

バインディングの場合: バインディング名="pollingDuplexBinding" maxConnections="100"

serviceBehaviors 動作の場合: serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000"

pollingDuplex の場合は maxPendingSessions="2147483647" maxPendingMessagesPerSession="2147483647"

しかし、その後、さまざまなクライアントで試したとき:

  • サーバー上の IE 上の 6 クライアント
  • 別のクライアント マシン上の IE 上の 6 つのクライアント
  • このクライアント マシンの FireFox 上の 4 つのクライアント

そしてそれはうまくいきました。したがって、同じクライアント接続には何らかの制限があります。

于 2012-08-17T15:22:20.390 に答える