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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查WCF是否有非常大的json字符串相关的知识,希望对你有一定的参考价值。

我需要在同步过程中发送超过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;
        }  

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

答案

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

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

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

Limits you can set in the System.Webserver config

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

以上是关于检查WCF是否有非常大的json字符串的主要内容,如果未能解决你的问题,请参考以下文章

分享前端开发常用代码片段

收藏|分享前端开发常用代码片段

用于检查匿名类型的JSON字符串的C#泛型实用程序

json解析失败怎么解决?

从 WCF 服务返回的 JSON 数据包含转义字符

使用 JSON 对 WCF 服务进行分页