2012-08-30 56 views
0

我有WCF >>双面打印>> SILVERLIGHT >> pollingDuplexHttpBinding =非常慢!大延迟

WCF与wsDualHttpBinding绑定为WPF applciation - >很好!让WCF立即发布方法。

与pollingDuplexHttpBinding另一约束力的silvelight 4 - >很慢 - > 30 ++ - 秒延迟后的WPF应用程序得到它(WPF立即得到它)

这是为什么?最好的谷歌的结果是

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-calls-to-be-slow.aspx

,我真的不知道该怎么contiune ...

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

回答

0

步骤一:从服务

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

删除AspNetCompatibilityRequirements到

public class Service1 : IService1 

如果您从Web.config中设置此项,请将其删除。

步骤II:在Silverlight

private void Application_Startup(object sender, StartupEventArgs e) 
     { 
       WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); 
       WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp); 
     } 
使用客户端堆栈
相关问题