Passer des arguments CGI à un exécutable dans Apache sous Windows

J’avais l’impression que je pouvais placer n’importe quel ancien programme exécutable dans le répertoire cgi-bin d’Apache et l’utiliser comme script CGI. Plus précisément, si j’ai un programme C #

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

et puis allez à http://example.com/cgi-bin/TestProg?hello=kitty&goodbye=world alors la chaîne de requête hello=kitty&goodbye=world serait passée comme premier paramètre à main, donc ma page devrait ressembler

 Arguments: hello=kitty&goodbye=world 

Malheureusement, aucun de mes parameters de requête n’est passé; la page se charge et imprime simplement Arguments: rien ne le suit.

Alors, comment puis-je transmettre mes parameters de requête à ce programme?

Les arguments ne sont pas passés sur la ligne de commande – à la place, apache définit les variables d’environnement avant d’appeler le programme cgi ( http://httpd.apache.org/docs/2.0/howto/cgi.html#behindscenes ).

Vous pouvez accéder à la variable d’environnement ‘QUERY_STRING’ qui contient le texte de la chaîne de requête.

  Ssortingng querySsortingng = System.Environment.GetEnvironmentVariable("QUERY_STRING"); 

Vous devrez ensuite parsingr vous-même querySsortingng.

Les données POST, cependant, sont passées sur STDIN, vous devrez donc utiliser Console.In pour le traiter.

Cela fait longtemps que je n’ai pas travaillé avec CGI et Apache, mais si je me souviens bien, la chaîne de requête est une variable d’environnement dans Apache. En C #, vous pouvez voir l’environnement avec System.Environment.GetEnvironmentVariables. Je n’ai pas de documents publiés pour me soutenir, mais je l’essayerais d’abord et je verrais.