【发布时间】:2014-02-26 12:55:46
【问题描述】:
我已经设置了 ServiceStack 来为我的 MVC 4 网站提供 Web 服务。我只会将 Soap1.2 与 Web 服务一起使用,到目前为止它运行良好。
除非我尝试发送一个太大的字节数组,然后我收到以下错误:
读取 XML 数据时已超出最大数组长度配额 (16384)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。
在客户端,我为绑定设置了 readerQuotas,它似乎可以正确提取它,因此问题似乎出在服务器端。通常会在 web.config 中添加 Web 服务的绑定设置,但我不确定如何为 ServiceStack 执行此操作。
如果是 ServiceStack 导致了问题。
如何将大量数据发送到使用 ServiceStack 创建的 Soap1.2 Web 服务? (不幸的是使用了字节数组)
【问题讨论】:
-
感谢 cvbarros。您是否有一个示例,说明如何在不更改 ServiceStack 代码的情况下设置 DataContractSerializer 实例?我认为它必须在配置中完成?我似乎无法设置它。
-
您可以在应用程序初始化代码(引导程序)中简单地执行此操作:
DataContractSerializer.Instance = new DataContractSerializer(new XmlDictionaryReaderQuotas { MaxStringContentLength = /* new value */ };,有效地设置单例实例。 -
太棒了!谢谢cvbarros。我将它添加到 init 中,并将 MaxArrayLength、MaxBytesPerRead 和 MaxNameTableCharCount 设置为更大的值(我必须稍微调整一下这些值才能使它们完美),但它现在可以工作了。
-
谢谢斯科特。我将其标记为已回答。
标签: c# servicestack soap1.2