在Windows上向Apache中的可执行文件传递CGI参数

在Windows上向Apache中的可执行文件传递CGI参数,apache,executable,cgi-bin,query-parameters,Apache,Executable,Cgi Bin,Query Parameters,我的印象是,我可以将任何旧的可执行程序放在Apache的cgi-bin目录中,并将其用作cgi脚本。具体来说,如果我有一个C#程序 然后转到http://example.com/cgi-bin/TestProg?hello=kitty&goodbye=world然后查询字符串hello=kitty&bye=world将作为第一个参数传递给main,因此我的页面应该如下所示 Arguments: hello=kitty&goodbye=world 不幸的是,我的查询参数都没有通过;页面加

我的印象是,我可以将任何旧的可执行程序放在Apache的
cgi-bin
目录中,并将其用作cgi脚本。具体来说,如果我有一个C#程序

然后转到
http://example.com/cgi-bin/TestProg?hello=kitty&goodbye=world
然后查询字符串
hello=kitty&bye=world
将作为第一个参数传递给main,因此我的页面应该如下所示

Arguments:
hello=kitty&goodbye=world
不幸的是,我的查询参数都没有通过;页面加载并只打印
参数:
,后面没有任何内容


那么如何将查询参数传递给这个程序呢?

我已经很长时间没有使用CGI和Apache了,但是如果我没有记错的话,查询字符串是Apache中的一个环境变量。在C#中,您可以使用System.environment.GetEnvironmentVariables查看环境。我没有任何已发布的文档来支持我,但我会先尝试一下,然后看看。

参数不会在命令行上传递-相反,apache会在调用cgi程序()之前设置环境变量

您可以访问包含查询字符串文本的环境变量“QUERY\u STRING”

 String queryString = System.Environment.GetEnvironmentVariable("QUERY_STRING");
然后您需要自己解析queryString

然而,POST数据是通过STDIN传递的,所以您需要使用Console.In来处理它

 String queryString = System.Environment.GetEnvironmentVariable("QUERY_STRING");