0

Listクライアント アプリケーションにを返す WCF サービスがあります。データベースの列の 1 つはbyte[]です。このオブジェクトのリストを返そうとするNetDispatcherFaultExceptionと、次の内部例外のみが返されます。

「XML データの読み取り中に、最大配列長クォータ (16384) を超えました。このクォータは、XML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトの MaxArrayLength プロパティを変更することで増やすことができます。行 1、位置 38697。」

この後グーグルで調べたところ、 で を増やす必要があることがわかったので、次maxArrayLengthweb.configようにしました。

<protocolMapping>
    <add binding="basicHttpsBinding" scheme="https"/>
    <add binding="basicHttpBinding" scheme="http" 
         bindingConfiguration="CrudserviceBinding" />
</protocolMapping>

<bindings>
    <basicHttpBinding>
        <binding name="CrudserviceBinding" maxReceivedMessageSize="52428800" >
            <readerQuotas maxStringContentLength="10242880"  
                          maxArrayLength="10242880" />
        </binding>
    </basicHttpBinding>
</bindings>

これはクライアント側の私の app.config です:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
              <binding name="BasicHttpBinding_ICrudService">
                <readerQuotas maxStringContentLength="5242880" 
                              maxArrayLength="52428800" />
              </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost/My.Project/CrudService.svc"
                      binding="basicHttpBinding" 
                      bindingConfiguration="BasicHttpBinding_ICrudService"
                      contract="MobileCrudService.ICrudService" 
                      name="BasicHttpBinding_ICrudService" />
        </client>
    </system.serviceModel>
</configuration>

これをもう一度試すと、WCF サービスは同じ例外を返します。誰かがこれにどう対処すべきか説明できますか?

4

1 に答える 1

1

クライアントのクラスライブラリでサービスを呼び出す場合は、実際のApplication.configファイルを変更していることを確認してください。使ってはいけません

Products/ProductName/Main/Source/Project_Name/bin/Debug/ProjectName.dll.config

代わりに使用する

Products/ProductName/Main/Source/Project_EXE_Name/bin/Debug/YourExe.config
于 2013-01-17T16:16:29.367 に答える