2

我正在编写一个在 IIS7 上运行的 C++ CGI 应用程序。我的问题是,当发送到 POST 请求的数据量超过一定大小时,永远从标准输入块读取,而不是设置 EOF。我怀疑这不是 C++ 特定的问题。我已经成功地将服务器配置为运行“hello world”类型的应用程序,我现在正在扩展它以做一些有用的事情,所以我不认为这是一个基本的错误配置。

说明问题的最简单的应用程序如下。应用程序在注释行的调用中停止(我已将调试器附加到在 IIS 下运行的进程以证明这一点)。

#include <iostream>

int main(int argc, char** argv )
{
    std::stringstream input_text;
    input_text << std::cin.rdbuf(); // application halts here

    std::cout << "Content-type: text/xml; charset=utf-8\n\n";
    return 0;
}

我发现很多人都在讨论同一个问题,但没有解决方案,例如

  • 类似的问题(查找字符串“似乎 IIS7 没有“立即”填充 STDIN,如果我只是对整个预期字节数进行了“读取文件”,则某些 Windows 线程会“卡在”某处。)
  • Python CGI 的类似问题
4

0 回答 0