3

wcf でストリーミング モードを使用すると、非常に奇妙な問題が発生します。これが私のサーバーとクライアントの構成です。

サーバー構成:

<system.serviceModel>
    <services>
      <service name="eTreasury.ServiceModel.ServiceImplimentation.BackOfficeService" 
               behaviorConfiguration="ServiceBehavior">
        <endpoint name="streamed"
                  address="/streamed"
                  binding="customBinding"
                  bindingConfiguration="BinaryHttpBindingStreamedConfig"
                  contract="eTreasury.ServiceModel.ServiceContracts.IBackOfficeService"
                  behaviorConfiguration="EndpointBehavior"/>
      </service>
    </services>
    <bindings>
      <customBinding>
        <binding name="BinaryHttpBindingStreamedConfig"
                 openTimeout="00:02:00"
                 receiveTimeout="00:02:00"
                 sendTimeout="00:02:00"
                 closeTimeout="00:02:00">
          <binaryMessageEncoding maxReadPoolSize="2147483647"
                                 maxWritePoolSize="2147483647"
                                 maxSessionSize="2147483647">
            <readerQuotas maxArrayLength="2147483647"
                          maxDepth="1024"
                          maxBytesPerRead="2147483647"
                          maxNameTableCharCount="2147483647"
                          maxStringContentLength="2147483647"/>
          </binaryMessageEncoding>
          <httpTransport maxBufferPoolSize="2147483647"
                          maxBufferSize="2147483647"
                          maxReceivedMessageSize="2147483647"
                          transferMode="StreamedResponse"/>
        </binding>
      </customBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="ClientBehavior">
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
</system.serviceModel>

クライアント構成:

<system.serviceModel>
    <bindings>
      <customBinding>
        <binding name="BinaryHttpBindingStreamedConfig" closeTimeout="00:05:00"
          openTimeout="00:05:00" receiveTimeout="00:05:00" sendTimeout="00:05:00">
          <binaryMessageEncoding />
          <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"
            transferMode="StreamedResponse" />
        </binding>
      </customBinding>
    </bindings>
<client>
      <endpoint address="http://localhost:2408/BackOfficeService.svc/streamed"
        binding="customBinding" bindingConfiguration="BinaryHttpBindingStreamedConfig" contract="BackOfficeServiceClient.IBackOfficeService"
        name="BackOfficeStreamedService" />
      </client>
   </system.serviceModel>

Google Chrome、Firefox、Opera では 200Mb のデータですべて問題ありません。Internet Explorer でのみ問題が発生します。

メッセージを逆シリアル化しようとしているときにフォーマッタが例外をスローしました: パラメータhttp://tempuri.org/:LoadOrdersResultを逆シリアル化しようとしているときにエラーが発生しました。InnerException メッセージは、「タイプ System.Collections.ObjectModel.ObservableCollection`1[[eTreasury.DataModel.BusinessObjects.OrderListItemForBack、eTreasury.SilverlightDataModel、Version=1.0.0.19815、Culture=neutral、PublicKeyToken=null のオブジェクトのデシリアライズ中にエラーが発生しました。 ]]。予期しないファイルの末尾。次の要素は閉じられていません: CreatedDate、OrderListItemForBack、LoadOrdersResult、LoadOrdersResponse、Body、Envelope。詳細については、InnerException を参照してください。

4

0 に答える 0