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 を「すぐに」満たしていないようでした。予想されるバイト数全体の「readfile」を実行した場合、一部の Windows スレッドがどこかで「スタック」していました。)'
- Python CGI での同様の問題