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
プログラムに引数を渡したい場合…
(続きを読む…)