检查WCF是否有非常大的json字符串

问题描述 投票:0回答:1

我需要在同步过程中发送超过20000篇文章,此过程由WCF以JSON格式发送。但序列化文章列表告诉我字符串对于该过程来说太大了。

我试过以下方式:

在我的REGEDIT中增加以下路径“Computer \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ HTTP \ Parameters”中的值“MaxFieldLength”和“MaxRequestBytes”

在我的Web配置中添加以下标记

<bindings>
  <basicHttpBinding>
    <binding maxBufferPoolSize = "2147483647" maxBufferSize = "2147483647" maxReceivedMessageSize = "2147483647" messageEncoding = "Text">
      <readerQuotas maxDepth = "2000000" maxStringContentLength = "2147483647" maxArrayLength = "2147483647" maxBytesPerRead = "2147483647" maxNameTableCharCount = "2147483647" />
    </ binding>
  </ basicHttpBinding>
</ bindings>

另外,尝试使用scvutil urlServicio / Service1.svc生成Service类

我使用以下属性:

    EndpointAddress endPoint = new EndpointAddress("urlServicio/Service1.svc");
        BasicHttpBinding binding = CreateBasicHttp();
Service1Client cliente = new Service1Client(binding, endPoint);
private static BasicHttpBinding CreateBasicHttp()
        {
            BasicHttpBinding binding = new BasicHttpBinding
            {
                Name = "BasicHttpBinding_IService1",
                MaxBufferSize = int.MaxValue,
                MaxReceivedMessageSize = long.MaxValue
            };
            TimeSpan timeout = new TimeSpan(0, 0, 120);
            binding.SendTimeout = timeout;
            binding.OpenTimeout = timeout;
            binding.ReceiveTimeout = timeout;
            binding.Security.Mode = BasicHttpSecurityMode.None;

            return binding;
        }  

但是他没有读给我绑定或端点

json wcf
1个回答
0
投票

您可能遇到与数据协定序列化程序相关的上限。检查这是否适用于您。

<system.runtime.serialization>
    <dataContractSerializer maxItemsInObjectGraph="100000" />
</system.runtime.serialization>

另一组限制和上面没有提到的一些限制是您可能在Web服务器(IIS)中遇到的限制。上面的配置和您发布的配置与WCF和.NET序列化有关。下面的文章显示了Web服务器生成的大写字母。

Limits you can set in the System.Webserver config

你从上面错过的另一件事是MaxBufferPoolSize

© www.soinside.com 2019 - 2024. All rights reserved.