.NETでコントローラを作ってみる
Javaのframeworkである、Strutsに触る機会があり、調べモノをしていたらこんな情報を発見。
ASP.NET and Struts: Web Application Architectures | Microsoft Docs
そうそう。ASP.NETは、MVCになってるとはいえ、ページコントローラ(Page Controller)なんだよね。
Strutsの.NET版を作るわけではないけど、勉強がてらにコントローラから作ってみることに。
Visual Studio 2005 でプロジェクト作成
参考サイト
1.「ファイル」-「新しい Web サイト...」
3.ソリューション エクスプローラで、"App_Code"のフォルダを新規作成
4."App_Code"の中にクラスを新規作成(Handler.cs にしました)
自動生成された Handler.cs ファイル
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; /// <summary> /// Handler の概要の説明です /// </summary> public class Handler { public Handler() { // // TODO: コンストラクタ ロジックをここに追加します // } }
5.ソースの書き換え
とりあえずこんな感じにしました。コメントアウトされているExceptionは、IHttpHandlerを実装したときに自動生成されたもの。
using System; using System.Web; /// <summary> /// Handler の概要の説明です /// </summary> public class Handler : System.Web.IHttpHandler { public Handler() { // // TODO: コンストラクタ ロジックをここに追加します // } #region IHttpHandler メンバ public bool IsReusable { // get { throw new Exception("The method or operation is not implemented."); } get { return false; } } public void ProcessRequest(HttpContext context) { // throw new Exception("The method or operation is not implemented."); context.Response.ContentType = "text/html"; context.Response.Write("Hello World"); } #endregion }
7.IEが開くので閉じる
8.Web.Configの編集
とりあえず、こんな感じになりました。〜.do が呼ばれたら、ハンドラが動くことを期待。Strutsに影響されすぎ?
<?xml version="1.0"?> <!-- メモ: このファイルを手動で編集する代わりに、Web 管理ツールを使用 してアプリケーションの設定を構成することができます。Visual Studio の [Web サイト] メニューにある [ASP.NET 構成] オプションから設定 を行ってください。設定およびコマンドの一覧は、通常 \Windows\Microsoft.Net\Framework\v2.x\Config にある machine.config.comments で確認できます。 --> <configuration> <appSettings/> <connectionStrings/> <system.web> <!-- デバッグ シンボルをコンパイルされたページに挿入するに は、compilation debug="true" に設定します。この設 定はパフォーマンスに影響するため、開発時のみこの値 を true に設定してください。 --> <compilation debug="true"/> <!-- <authentication> セクションは、ユーザーを識別するため に、ASP.NET で使用されるセキュリティ認証モードの構成 を有効にします。 --> <authentication mode="Windows"/> <!-- <customErrors> セクションは、要求の実行中にハンドル されていないエラーが発生した場合の処理方法の構成を 有効にします。具体的には、開発者が HTML エラー ペ ージをスタック トレースのエラーの代わりに表示するように構 成することを可能にします。 <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> <httpHandlers> <add verb="*" path="*.do" type="Handler"/> </httpHandlers> </system.web> </configuration>