C# php cgi POST请求无缘无故变成GET请求

C# php cgi POST请求无缘无故变成GET请求,c#,php,post,webserver,cgi,C#,Php,Post,Webserver,Cgi,我正在用php开发一个windows web服务器,我想使用php cgi。 它工作得很好,但是我在GET和POST请求方面遇到了问题。当我将环境变量“REQUEST\u METHOD”设置为“POST”时,我在$\u POST变量中没有得到任何东西,但我在$\u get中得到了内容:/It没有任何意义 这是我的密码: Process php = new Process(); php.StartInfo.FileName = "C:/PHP-7.1/php-cgi.exe"; php.Start

我正在用php开发一个windows web服务器,我想使用php cgi。 它工作得很好,但是我在GET和POST请求方面遇到了问题。当我将环境变量“REQUEST\u METHOD”设置为“POST”时,我在$\u POST变量中没有得到任何东西,但我在$\u get中得到了内容:/It没有任何意义

这是我的密码:

Process php = new Process();
php.StartInfo.FileName = "C:/PHP-7.1/php-cgi.exe";
php.StartInfo.RedirectStandardOutput = true;
php.StartInfo.UseShellExecute = false;
php.StartInfo.EnvironmentVariables["GATEWAY_INTERFACE"] = "CGI/1.1";
php.StartInfo.EnvironmentVariables["SCRIPT_FILENAME"] = page;
php.StartInfo.EnvironmentVariables["REQUEST_METHOD"] = "POST";
php.StartInfo.EnvironmentVariables["REDIRECT_STATUS"] = "true";
php.StartInfo.EnvironmentVariables["SERVER_PROTOCOL"] = "HTTP/1.1";
php.StartInfo.EnvironmentVariables["SERVER_SOFTWARE"] = ServerVersion;
php.StartInfo.EnvironmentVariables["REMOTE_HOST"] = "127.0.0.1";
//php.StartInfo.EnvironmentVariables["CONTENT_LENGTH"] = "3"; // Causes crash
php.StartInfo.EnvironmentVariables["HTTP_ACCEPT"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
php.StartInfo.EnvironmentVariables["CONTENT_TYPE"] = "text/html";
String QueryString = "";
if (request.GET_Variables.Count() > 0)
{
    int i = 0;
    foreach (String variable in request.GET_Variables)
    {
        QueryString += variable + "=" + request.GET_Values[i];
        i++;
        if (i != request.GET_Variables.Count())
        {
            QueryString += "&";
        }
    }
}
php.StartInfo.EnvironmentVariables["QUERY_STRING"] = QueryString;
php.StartInfo.Arguments = "-f \"" + page + "\"";
Console.WriteLine("php-cgi.exe " + php.StartInfo.Arguments); // Debug
php.Start();
例如,如果:

QUERY_STRING="fox=brown&dog=lazy"
var_dump();将如下所示:

GET: array(2) { ["fox"]=> string(5) "brown" ["dog"]=> string(4) "lazy" }
POST: array(0) { }

我希望有人能帮助我,祝你有愉快的一天

我在这里猜测,但通常情况下,POST值不是在查询字符串中提供的,而是在请求正文中提供的。这是不是让PHP把
$\u GET
而不是
$\u POST
搞混了?谢谢你的快速回复:)我退出了noob,所以我不知道请求主体是什么:/Thy是参数吗?像这样吗?:php-cgi.exe-f“D:\www_w32n\get.php”fox=brown&dog=lazy我猜我说过了。但是我读过一些关于不调用
php.Start()
,而是用popen打开一个管道,然后将请求体写入其中的页面。我在这里猜测,但通常情况下,POST值不是在查询字符串中提供的,而是在请求体中提供的。这是不是让PHP把
$\u GET
而不是
$\u POST
搞混了?谢谢你的快速回复:)我退出了noob,所以我不知道请求主体是什么:/Thy是参数吗?像这样吗?:php-cgi.exe-f“D:\www_w32n\get.php”fox=brown&dog=lazy我猜我说过了。但是我读过一些关于不调用
php.Start()
而是用popen打开一个管道,然后将请求主体写入其中的页面。