net :: ERR_INCOMPLETE_CHUNKED_ENCODING是什么意思,我该如何解决?

时间:2014-05-16 21:15:16

标签: php html asp.net httprequest bing-api

我正在编写一个Web应用程序,根据此处显示的示例生成Bing Ads API的报告:

http://msdn.microsoft.com/en-us/library/bing-ads-reporting-request-and-download-a-keyword-performance-report-in-php.aspx

我编译了代码,但是在运行时,服务器突然终止请求并在此代码块的开头返回ERR_INCOMPLETE_CHUNKED_ENCODING:

$waitTime = 30 * 1; 
$reportRequestStatus = null;

// This sample polls every 30 seconds up to 5 minutes.
// In production you may poll the status every 1 to 2 minutes for up to one hour.
// If the call succeeds, stop polling. If the call or 
// download fails, the call throws a fault.

for ($i = 0; $i < 10; $i++)
{
    sleep($waitTime);

    // PollGenerateReport helper method calls the corresponding Bing Ads service operation
    // to get the report request status.

    $reportRequestStatus = PollGenerateReport(
            $proxy, 
            $reportRequestId
            );

    if ($reportRequestStatus->Status == ReportRequestStatusType::Success ||
        $reportRequestStatus->Status == ReportRequestStatusType::Error)
    {
        break;
    }
}

我尝试打印出值并逐行调试,但我无法弄清楚是什么导致了这个错误。谷歌搜索错误也没有带来任何相关的问题。我想知道是否有其他人之前遇到过这个错误,并且可以告诉我是什么导致了它?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我没有弄错 - 这是由于您的服务器配置为处理各种请求的方式。

ASP.NET有一些配置设置,但简而言之,如果在分块请求完成之前刷新缓冲区,则会出现此错误。这是我在前一段时间遇到类似问题时发现的链接。祝你好运!

编辑:此外,还有一个IIS页面,其中介绍了如何启用可能导致问题的响应处理: 启用或禁用HTTP 1.1分块传输编码

  

为万维网启用HTTP 1.1分块传输编码   发布服务,使用以下语法:appcmd set config   / section:asp / enableChunkedEncoding:True | False True启用HTTP 1.1   分块传输编码,而False禁用HTTP 1.1分块   转移编码。默认值为True。

     

...

     

     

指定ASP页面允许脚本运行的默认时间长度   在终止脚本并将事件写入Windows之前   事件日志,使用以下语法:appcmd set config / section:asp   / scriptTimeout:timeSpan变量timeSpan表示最大值   时间(hh:mm:ss)ASP请求可以在写入事件之前运行   到Windows事件日志。默认值为00:01:30。   http://technet.microsoft.com/en-us/library/cc730855(v=ws.10).aspx

这个家伙也很好地解释了这一点:

  
    

ASP.NET以分块编码(Transfer-Encoding:chunked)将数据传输到客户端,如果您过早刷新响应     用于Http请求的流和用于的Content-Length头     您没有明确设置响应。

  
     

通常这不应该是一个问题,因为大多数现代HTTP客户端   能够处理chunked和non-chunked服务器   响应,自动对分块响应进行去块(请注意   分块传输编码仅由HTTP 1.1规范定义。

     

但是,在我自己的情况下,我正在进行异步Ajax调用   来自javascript的ASP.NET web服务。并且处理的网络方法   请求将响应显式刷新到客户端,然后关闭   响应(我需要这样做,因为请求是从   一个ExtJs商店的自动加载调用,我需要关闭   服务器上的连接,以便客户端Store接受和加载   json序列化数据)。

     

http://www.rahulsingla.com/blog/2010/06/asp-net-sets-the-transfer-encoding-as-chunked-on-premature-flushing-the-response