专门为输出增加 maxBufferSize

Increasing maxBufferSize specifically for output

现在我正在尝试创建一个 WCF 服务来解析一组 json 文件。一个函数实际执行解析,另一个函数收集 json 字符串数组。该数组超过了最大缓冲区大小,但是当我将它插入后者时(在创建数组的函数中)没有错误 - 只有当我尝试 return 数组本身时。这就是我的意思:

Web2String.ServiceClient webServ = new Web2String.ServiceClient();
        string[] ip = new string[12];
        //MAKE SURE TO REPLACE THE KEY
        for (int i = 1; i < 13; i++)
        {
            if (mo == i || mo > 12 || mo < 1)
            {
                ip[i - 1] = webServ.GetWebContent("https://www.some.url");
            }
        }
        return ip;

不起作用,但是

Web2String.ServiceClient webServ = new Web2String.ServiceClient();
        string[] ip = new string[12];
        //MAKE SURE TO REPLACE THE KEY
        for (int i = 1; i < 13; i++)
        {
            if (mo == i || mo > 12 || mo < 1)
            {
                ip[i - 1] = webServ.GetWebContent("https://www.some.url");
            }
        }
        return otherFunction(ip);

会。

这是我尝试添加的绑定(什么也没做)。

<bindings>
  <basicHttpBinding>
      <binding name="BasicHttpBinding_IService" maxBufferPoolSize="6000000"
        maxBufferSize="5000000" maxReceivedMessageSize="5000000" >
      </binding>
  </basicHttpBinding>
</bindings>

我该如何处理?

报错信息大体如下:

编辑:为了清楚起见,我还应该提到 otherFunction return 是一个数组,远低于缓冲区大小。

您似乎从服务端收到了错误消息。根据您的错误消息和配置,您已经设置了 maxReceivedMessageSize 和其他设置的限制值。如果您尚未将该绑定分配给您的服务终结点,在这种情况下,WCF 将使用 maxReceivedMessageSize 的默认值,即 65536。

您需要通过端点元素的 bindingConfiguration 属性将定义的绑定 (wsBinding) 分配给您的端点,如下所示:

<endpoint address="" 
      binding="wsHttpBinding"
      bindingCongifuration="wsBinding"
      contract="PMSService.ThomoloshaDeclaration">