【问题标题】:.net Serializer Deserialization failing when string is greater than 32768 characters long当字符串长度大于 32768 个字符时,.net 序列化程序反序列化失败
【发布时间】:2011-11-18 14:10:48
【问题描述】:

我有这样的方法:

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

当 ruleSetXmlDefinition 的长度大于 32768 个字符时,我收到以下错误:

解析名称时出现意外的文件结尾。 1号线, 位置 32768。

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

【问题讨论】:

    标签: c# .net serialization


    【解决方案1】:

    我怀疑您可以将 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>
    

    【讨论】:

    • 这个方法没有暴露在 WCF 上,它只是一个简单的本地方法
    • @DavidWard:我注意到您没有这么说,但 WorkflowMarkupSerializer 是 WCF 的一部分,因此配置可能适用。您可以在 MSDN 中搜索全局覆盖默认值的方法
    • 感谢您,但我无法找到有关全局设置 WCF 配置的更多信息。此外,当低于字符限制时,此代码可以正常工作,并且我在应用程序的任何地方都没有任何 WCF 配置,所以看不到这有什么帮助
    • @DavidWard:嗯,那是因为默认值?好吧,对不起,我不能再帮你了。
    【解决方案2】:

    我找到了这个问题的答案,不幸的是,这很明显......我传入的字符串实际上被截断了,所以问题实际上是 xml 格式不正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 2015-11-26
      • 2018-10-22
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多