2009-09-03 7 views
2

Apacheのcgi-binディレクトリに古い実行可能プログラムを置いてCGIスクリプトとして使用できるという印象を受けました。具体的には、私はC#プログラムWindows上のApacheで実行可能ファイルにCGI引数を渡す

static class TestProg 
{ 
    static void Main(string[] args) 
    { 
     Console.Write("Content-type: text/plain\r\n\r\n"); 
     Console.WriteLine("Arguments:"); 
     foreach (string arg in args) 
      Console.WriteLine(arg); 
    } 
} 

を持っている場合、その後、クエリ文字列hello=kitty&goodbye=worldがメインの最初のパラメータとして渡されますので、マイページ

残念ながら
Arguments: 
hello=kitty&goodbye=world 

のようになります。その後、http://example.com/cgi-bin/TestProg?hello=kitty&goodbye=worldに行き、クエリパラメータのいずれも渡されません。ページがロードされ、それに続くものがないだけArguments:が印刷されます。

このプログラムにクエリパラメータを渡すにはどうすればよいですか?

答えて

4

引数はコマンドラインで渡されません。代わりに、apacheはcgiプログラムが呼び出される前に(http://httpd.apache.org/docs/2.0/howto/cgi.html#behindscenes)環境変数を設定します。

クエリ文字列のテキストを含む環境変数 'QUERY_STRING'にアクセスできます。

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

次に、queryStringを自分で解析する必要があります。

しかし、POSTデータはSTDINに渡されるため、Console.Inを使用して処理する必要があります。

3

私はCGIとApacheで作業して以来、長いことがありましたが、正しくリコールすると、クエリ文字列はApacheの環境変数になります。 C#では、System.Environment.GetEnvironmentVariablesで環境を見ることができます。私は私をバックアップするために公開されたドキュメントはありませんが、まずそれを試してみるといいでしょう。

関連する問題