0

List我有一个 WCF 服务,它应该向我的客户端应用程序返回一个。数据库中的一列是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

如果您在客户端上的类库中调用该服务,请确保您正在更改实际的应用程序 .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 回答