WCF - 读取XML数据时已超出最大字符串内容长度配额(8192)

时间:2013-12-02 20:34:12

标签: c# .net wcf web-services web-config

我有一个Web服务,第三方使用它来访问我工作的公司的各种功能。此Web服务正在使用公司内的其他Web服务发送电子邮件,这是我们在特别长的电子邮件中收到的错误 - “读取XML数据时已超出最大字符串内容长度配额(8192)。”

我已经阅读了问题和答案here,但没有运气。我已经修改了我的web.config文件的basicHttpBinding元素上的readerQuotas,我仍然收到此错误。修改服务器(我正在调用的Web服务所在的位置)是不行的,因为使用该服务的任何其他客户端都不会发生此问题,这是在企业环境中。我能够使用完全相同的内容,在我自己的服务之外调用此服务,并取得成功。就在我正在调用我的服务时调用电子邮件服务时出现错误。

有人有任何建议吗?我处于停滞状态,我厌倦了抨击我的头。我现在唯一想到的是修改电子邮件服务的配置文件,但公司内部只有一个,而且它是一个生产服务,因此几乎不可能只是测试并看看这是否能解决我的问题。

谢谢,

T.J。

编辑:相关配置部分

客户端

<endpoint address="https://foo.domain/MailService.asmx"
    binding="basicHttpBinding" bindingConfiguration="MailServiceSoap"
    contract="MailService.MailServiceSoap" name="MailServiceSoap" />

<basicHttpBinding>      
    <binding name="MailServiceSoap"  maxReceivedMessageSize="2147483647"
        maxBufferSize="2147483647" openTimeout="00:10:00" receiveTimeout="00:10:00"
        sendTimeout="00:10:00" closeTimeout="00:10:00">
    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
        maxArrayLength="2147483647" maxBytesPerRead="2147483647"
        maxNameTableCharCount="2147483647" />
    <security mode="Transport">
        <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
        <message clientCredentialType="UserName" algorithmSuite="Default"/>
    </security>
    </binding>
</basicHttpBinding>

服务器

继续努力。我没有任何访问权限。

2 个答案:

答案 0 :(得分:0)

是否有可能以编程方式覆盖配置设置,或者您是否尝试过以编程方式设置它们?只是一个想法。

答案 1 :(得分:0)

我找到了我的解决方案,它是here。我深深地想到它是在我的服务和我正在呼叫的服务之间,当它实际上是完全分开的时候。我的服务没有设置为处理那么久的消息。链接帖子中的最佳答案包含了引导我的信息 - 即服务器反序列化数据,而客户端读取数据。我的错误是围绕反序列化数据,这意味着我的服务器就是问题。我在我的服务的绑定元素中扩展了readerQuotas的长度,问题解决了。