簡體   English   中英

WCF >> DUPLEX >> SILVERLIGHT >> pollingDuplexHttpBinding =非常慢! 大延遲

[英]WCF >> DUPLEX >> SILVERLIGHT >> pollingDuplexHttpBinding = VERY SLOW ! BIG DELAY

我有

具有wSDualHttpBinding綁定的WCF用於WPF應用->效果很好! 讓WCF立即發布方法。

在wpf應用程序得到它之后,另一個與pollingDuplexHttpBinding綁定的silvelight 4->非常慢-> 30 ++-秒的延遲(WPF立即得到它)

這是為什么 ? 最好的google結果是

http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes- silverlight呼叫要慢.aspx

我真的不知道該怎么做...

<system.serviceModel>

    <!-- Register the binding extension from the SDK. -->
    <extensions>
      <bindingExtensions>
        <add name="pollingDuplexHttpBinding"
             type="System.ServiceModel.Configuration.PollingDuplexHttpBindingCollectionElement,
                   System.ServiceModel.PollingDuplex, 
                   Version=4.0.0.0, 
                   Culture=neutral, 
                   PublicKeyToken=31bf3856ad364e35" />
      </bindingExtensions>
    </extensions>

    <bindings>
      <wsDualHttpBinding>
        <binding name="wsDualHttpBinding"
                 maxBufferPoolSize="2147483647"
                 maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647"
                        maxStringContentLength="2147483646"
                        maxArrayLength="2147483646"
                        maxBytesPerRead="2147483647"
                        maxNameTableCharCount="2147483647" />
        </binding>
      </wsDualHttpBinding>
      <pollingDuplexHttpBinding>
        <binding name="multipleMessagesPerPollPollingDuplexHttpBinding"
                 duplexMode="MultipleMessagesPerPoll"
                 maxOutputDelay="00:00:30"
                 maxBufferPoolSize="2147483647"
                 maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647"
                        maxStringContentLength="2147483646"
                        maxArrayLength="2147483646"
                        maxBytesPerRead="2147483647"
                        maxNameTableCharCount="2147483647" />
        </binding>
      </pollingDuplexHttpBinding>
    </bindings>



    <services>
      <service behaviorConfiguration="" name="TheWCFService.Service1">

        <endpoint address="wsDualHttpBinding"
                  binding="wsDualHttpBinding"
                  bindingConfiguration="wsDualHttpBinding"
                  contract="TheWCFService.IService1">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>

        <endpoint
          address="mex"
          binding="mexHttpBinding"
          bindingConfiguration=""
          contract="IMetadataExchange" />

        <endpoint
           address="pollingDuplexHttpBinding"
           binding="pollingDuplexHttpBinding"
           bindingConfiguration="multipleMessagesPerPollPollingDuplexHttpBinding"
           contract="TheWCFService.IService1">
        </endpoint>

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8732/Service1/" />
          </baseAddresses>
        </host>

      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="6553600"/>
          <serviceThrottling maxConcurrentSessions="500" maxConcurrentCalls="500" maxConcurrentInstances="500" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

步驟一:從服務中刪除AspNetCompatibilityRequirements

  [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1

public class Service1 : IService1

如果從Web.config進行設置,則將其刪除。

第二步:在Silverlight中使用客戶端堆棧

 private void Application_Startup(object sender, StartupEventArgs e)
        {
                WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
                WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM