2011-03-24 1 views
2

Silverlight 4.0에서 PollingDuplex Binding을 사용하여 양방향 WCF 서비스를 현재 작성하려고합니다.높은 콜백 호출로 WCF PollingDuplex로 인해 서비스가 너무 자주 사용되지 않음 새로운 서비스 구독에 대한 예외가 발생했습니다.

내 서비스는 연결된 모든 클라이언트에 대해 1 초마다 몇 가지 콜백 메서드를 호출합니다.

[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> 

2 클라이언트가 연결된 후 그러나, 신규 고객은

내 서비스 이용이 동작 "에 ... 위치 서비스가 너무 바빠서"있어요 서비스 행동 :

<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> 

도움이 필요하십니까? 이 예외는 나를 미쳤다!

답변

0

"maxconnection"기본값 2와 관련이 있다고 생각합니다. System.Net에서. 당신은 서비스와 클라이언트 설정에서 다음과 같은 구성을 추가하려고하고 결과를 향상 여부를 확인,

위의 구성은 클라이언트 응용 프로그램에 적용되지만 PollingDuplex이 서비스를위한 클라이언트로 동작하는 이중 채널 기억 할 수 콜백 (call-back) 작업.

내가 한 Internet Explorer를 사용하는 경우 내 PollingDuplex-소프트웨어는 10 개의 클라이언트의 제한을 한 것으로 나타났습니다 http://blogs.msdn.com/b/wenlong/archive/2009/02/08/why-only-two-concurrent-requests-for-load-testing.aspx

0

위의 구성에 대한 요구 사항이 이유에 대해 설명 Wenlong에 의해 아름다운 블로그를 찾아주세요. 바인딩

: 한계는 윈도우 2008 서버 R2 기계와의 Web.config에 여전히 가지고 많은 설정했다 바인딩 이름 = "pollingDuplexBinding"의 MaxConnections = "100"serviceBehaviors 동작에 대한

: serviceThrottling maxConcurrentCalls = "1000"maxConcurrentInstances = "1000"maxConcurrentSessions = "1000"

및 pollingDuplex위한

maxPendingSessions = "2147483647"maxPendingMessagesPerSession = "2147483647"

그런데 WH

  • 6 클라이언트 IE에서 서버에
  • 이 클라이언트 시스템에
  • 4 클라이언트 파이어 폭스에서 다른 클라이언트 시스템에서 IE 6 개 고객

그리고 : 나는 다른 클라이언트와 시도 엉 일했다. 따라서 동일한 클라이언트 연결에는 몇 가지 제한이 있습니다.