0

ファイルをチャンクでWCFサービスにアップロードするSilverlightアプリケーションがあります。サービスとSilverlightアプリの両方をローカルで実行すると、すべてが正常に機能します。両方をIISに展開すると、チャンクサイズ(この場合は16k)よりも小さいファイルでも機能しますが、ファイルがそれよりも大きい場合は失敗します。これは、ここで説明されている問題とほぼ同じです:http ://social.msdn.microsoft.com/Forums/en-US/wcf/thread/19329afc-8a73-4756-80cd-bbdada75c0e2しかし、そこでの解決策は機能しません私は、すでにWCFプロキシインスタンスへの強力な参照を保持しています。しかし、私の場合、その場合と同様に、単一の非同期呼び出しは成功しますが、複数の呼び出しは失敗します。

web.configのserviceModelエントリは次のとおりです。

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
                <serviceDebug includeExceptionDetailInFaults="true"/>
                <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <bindings>
        <customBinding>
            <binding name="binaryHttpBinding" closeTimeout="00:20:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:20:00">
                <binaryMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647" maxSessionSize="2147483647">
                    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
                </binaryMessageEncoding>
                <httpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" authenticationScheme="Anonymous" maxBufferSize="2147483647" transferMode="Buffered"/>
            </binding>
        </customBinding>
    </bindings>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <services>
        <service name="ADE.Web.IADEFileTransferService" >
            <endpoint address="" binding="customBinding" bindingConfiguration="binaryHttpBinding"
                contract="ADE.Web.ADEFileTransferService" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        </service>
    </services>
</system.serviceModel>
4

1 に答える 1

0

クライアント側とサーバー側の両方で同じreaderQuotas設定を行う必要があります。つまり、Silverlight構成ファイルも同じ設定にする必要があります。

また、以下に示すように、maxItemsInObjectGraphを使用してserviceBehaviourタブにdataContractSerializer要素を追加することを検討してください。

<serviceBehaviors>        
        <behavior name="default">
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
</serviceBehaviors>        

また、以下に示すように、httpRunTime要素のmaxRequestLength値を追加することもできます。

<system.web>
    <httpRuntime maxRequestLength ="32768"/>
</system.web>
于 2012-05-19T14:12:15.987 に答える