.net Serializer当字符串长度超过32768个字符时,反序列化失败

时间:2011-11-18 14:10:49

标签: c# .net serialization

我有这样的方法:

var stringReader = new StringReader(ruleSetXmlDefinition);
var reader = XmlReader.Create(stringReader);
var serializer = new WorkflowMarkupSerializer();
return serializer.Deserialize(reader) as RuleSet;

当ruleSetXmlDefinition长度超过32768个字符时,我收到以下错误:

  

解析名称时发生了意外的文件结束。第1行,   位置32768。

如何更改它以便它可以处理任何长度的字符串?

2 个答案:

答案 0 :(得分:3)

我怀疑你可以配置Wcf来接受更大的数组,请参阅这个答案:

这样的东西
<netTcpBinding>
        <binding name="NetTcpBinding_ImageResizerServiceContract" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10"
maxReceivedMessageSize="2147483647">
                <readerQuotas maxDepth="2147483647"
                                          maxStringContentLength="2147483647"
                                          maxArrayLength="2147483647"
                                          maxBytesPerRead="2147483647"
                                          maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
                <security mode="Transport">
                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                        <message clientCredentialType="Windows" />
                </security>
        </binding>

</netTcpBinding>

答案 1 :(得分:1)

我找到了这个问题的答案,不幸的是,这是非常明显的......我传入的字符串实际上被截断了,所以实际上问题是xml没有很好地形成。