Visual C# で Apache CGI を作成

Visual C# を使って Webアプリケーションを作成する場合、ASP.NET と組み合わせるのが普通ですが… 様々な理由があって、Webサーバーは、Windows版のApacheを使いたいということもあるかと思います。

実は、とても簡単に作ることができます。

標準出力にHTML文を出力するプログラムを作成するだけ!

具体的には…
(Visual C# 2008 Express Editionで説明します)

ファイル(F)> 新しいプロジェクト(P)> コンソールアプリケーション
プロジェクト名:ConsoleApp

プログラムソース(Program.cs)


namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Content-type: text/htmln");
            Console.WriteLine("<HTML>");
            Console.WriteLine("<HEAD>");
            Console.WriteLine("<TITLE>タイトル</TITLE>");
            Console.WriteLine("</HEAD>");
            Console.WriteLine("<BODY>");

            Console.WriteLine("出力したいデータ");

            Console.WriteLine("</BODY>");
            Console.WriteLine("</HTML>");
        }
    }
}

ビルド→ Console.exe

基本的には、これでOK!

最初にヘッダ文字列(”Content-type: text/html”)と[空行]を出力する所がポイントで、あとは通常のHTMLデータが出力されるようにプログラムを組むことになります。

このプログラム(Console.exe)を、Apacheが稼動するサーバーのDosumentRoot下へ保存しますが、ファイルの拡張子が「.exe」のままではいけません。

Apacheの流儀にあわせて、拡張子を「.cgi」とします。
(ファイル名を変更するだけです ConsoleApp.exe → ConsoleApp.cgi)

動作しない場合は、Apacheの設定ファイル(http.conf)の以下の部分を確認します。

↓コメント(#)になっていたら、外して有効にする。
LoadModule cgi_module modules/mod_cgi.so

<Directory "プログラムを保存する場所">
  Options ExecCGI を加える
</Directory>

↓コメント(#)になっていたら、外して有効にする。
AddHandler cgi-script .cgi

プログラムに引数を渡したい場合…

プログラムソース(Program.cs)


namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Content-type: text/htmln");
            Console.WriteLine("<HTML>");
            Console.WriteLine("<HEAD>");
            Console.WriteLine("<TITLE>タイトル</TITLE>");
            Console.WriteLine("</HEAD>");
            Console.WriteLine("<BODY>");

            int n = args.Length;
            if (n > 0) {
                for (int i = 0; i < n; i++)
                {
                    Console.WriteLine("引数: " + args[i] + "<br>");
                }
            }

            Console.WriteLine("</BODY>");
            Console.WriteLine("</HTML>");
        }
    }
}

ビルド→ Console.exe

ブラウザで、URLを以下のように入力

> ConsoleApp.cgi?abc+def

結果:
引数: abc
引数: def

タグ: ,

コメント / トラックバック1件

  1. Welcome to online shop for , purses and accessories for women. Great amount of of high quality in stock with quite low prices, get your perfect with free shipping and fast delivery.

コメントをどうぞ