C# 已超过最大字符串内容长度配额(8192)。请增加XmlDictionaryReaderQuotas上的MaxStringContentLength属性

C# 已超过最大字符串内容长度配额(8192)。请增加XmlDictionaryReaderQuotas上的MaxStringContentLength属性,c#,wcf,web-config,C#,Wcf,Web Config,当我将实体对象传递给Web服务时,出现了以下错误 读取XML数据时已超过最大字符串内容长度配额(8192)。可以通过更改创建XML读取器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性来增加此配额 我试图通过在Webservice的webconfig中提供以下代码来解决这个问题,但错误仍然存在。有人能帮忙吗 <bindings> <wsHttpBinding> <bindi

当我将实体对象传递给Web服务时,出现了以下错误

读取XML数据时已超过最大字符串内容长度配额(8192)。可以通过更改创建XML读取器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性来增加此配额

我试图通过在Webservice的webconfig中提供以下代码来解决这个问题,但错误仍然存在。有人能帮忙吗

 <bindings>
      <wsHttpBinding>
        <binding name="MyService" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                    maxArrayLength="2147483647" maxBytesPerRead="2147483647"
                   maxNameTableCharCount="2147483647" />
          <security mode="TransportWithMessageCredential">
            <transport clientCredentialType="None" />
            <message clientCredentialType="UserName" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>


您必须在服务器和客户端上设置最大字符串内容长度配额。因此,请检查您的客户端配置。如果不起作用,请检查您是否使用了正确的绑定。

您必须在服务器和客户端上设置最大字符串内容长度配额。因此,请检查您的客户端配置。如果不起作用,请检查您是否使用了正确的绑定。

您的服务器端Web配置允许使用大字符串,但您还需要修改客户端ServiceReferences.ClientConfig文件以反映这一点

<configuration>
  <system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="Binding_MyService">
                <binaryMessageEncoding />
                <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="yourserviceurlhere"
            binding="wsHttpBinding" bindingConfiguration="Binding_MyService"
            contract="yourcontracthere" name="MyService" />
    </client>
</system.serviceModel>


服务器端Web配置允许使用大字符串,但您还需要修改客户端ServiceReferences.ClientConfig文件以反映这一点

<configuration>
  <system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="Binding_MyService">
                <binaryMessageEncoding />
                <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="yourserviceurlhere"
            binding="wsHttpBinding" bindingConfiguration="Binding_MyService"
            contract="yourcontracthere" name="MyService" />
    </client>
</system.serviceModel>


但我在某个地方读到,当使用WCF web服务时,我们不需要创建自定义绑定。实际上,这是我从自己的项目中提取的一些修改过的代码。如果您的silverlight客户端使用basichttpbinding,那就好了。正如我从你的回复者对peer的评论中看到的那样,从技术上讲,如果这只发生在连接的一侧,你只需要修改该一侧的配置文件。换句话说,如果发送到服务失败,请修改服务的配置文件。如果它发生在客户机上,您只需要修改客户机配置文件。但是我在某个地方读到,当使用WCF web服务时,我们不需要创建自定义绑定。事实上,这是我从自己的项目中提取的一些修改过的代码。如果您的silverlight客户端使用basichttpbinding,那就好了。正如我从你的回复者对peer的评论中看到的那样,从技术上讲,如果这只发生在连接的一侧,你只需要修改该一侧的配置文件。换句话说,如果发送到服务失败,请修改服务的配置文件。如果它发生在客户端上,您只需要修改客户端配置文件。我非常确定我使用的是HTTPS绑定,所以我在我的项目中尝试了一个新的绑定以及web服务web配置。您的服务器上有一个wsHttpBinding绑定,客户端上有一个basicHttpBinding绑定。我确信其中一个是不正确的,请检查服务器和客户端绑定并启动wcf日志记录。当您第一次在Visual Studio中创建servicereference时,您的web服务不是HTTPS吗?如果是这样,作为一种快速而肮脏的解决方案,您可以尝试删除引用,从ServiceReferences.ClientConfig中删除条目,然后从您现有的web服务中添加所有新的绑定。我非常确定我使用的是HTTPS绑定,所以我在我的项目中尝试了一个新绑定以及web服务web配置。您的服务器上有一个wsHttpBinding绑定,客户端上有一个basicHttpBinding绑定。我确信其中一个是不正确的,请检查服务器和客户端绑定并启动wcf日志记录。当您第一次在Visual Studio中创建servicereference时,您的web服务不是HTTPS吗?如果是这样,作为一种快速而肮脏的解决方案,您可以尝试删除引用,从ServiceReferences.ClientConfig中删除条目,然后从现有web服务中添加所有新条目。提供客户端和服务器端绑定。正如@peer所说,创建这个错误肯定是不匹配的@Dhawalk说,你能发布完整的服务配置吗?尽管您可能已经为绑定定义了更大的值,但有可能由于一些原因(取决于配置中的内容以及所使用的.NET版本)而不使用这些值。请提供客户端和服务器端绑定。正如@peer所说,创建这个错误肯定是不匹配的@Dhawalk说,你能发布完整的服务配置吗?尽管您可能已经为绑定定义了更大的值,但也有可能由于一些原因(取决于配置中的内容以及所使用的.NET版本)而不使用这些值。