フロントコントローラーパターン実装 やっと動く
.NETによるエンタープライズソリューションパターン (Patterns & practices) の「HTTPハンドラを利用したASP.NETでのフロントコントローラの実装」がやっと動いた。
HTTP ハンドラを使用した ASP.NET でのフロント コントローラの実装のページ
実装したファイル(VisualStudio2002)FrontCtrl.lzh
不明点だった処
<configSections>部分の設定について何もかかれていなかったのでかなり悩んだ・・・わからんて(T_T)
Web.configファイルの<configuration>直下に
<configSections>
<section name="controller.mapping" type="FrontCtrl.UrlMap,FrontCtrl" />
</configSections>
を追加する必要がある。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- UrlMapで読み込むためセクションを追加 --> <configSections> <section name="controller.mapping" type="FrontCtrl.UrlMap,FrontCtrl" /> </configSections> <!-- 追加ここまで --> <system.web> 〜〜〜〜〜 省略 〜〜〜〜〜〜 </system.web> <!-- UrlMapで読み込み情報追加。keyにアクセスされた場合、urlへ転送する --> <controller.mapping> <entries> <entry key="/FrontCtrl/Page1.aspx" url="ActualPage1.aspx" /> <entry key="/FrontCtrl/Page2.aspx" url="ActualPage2.aspx" /> </entries> </controller.mapping> <!-- 追加ここまで --> </configuration>
<configSections>の追加部分
type="FrontCtrl.UrlMap,FrontCtrl"
は、
クラスの完全修飾名,アセンブリ名
だと思う・・・
IConfigurationSectionHandlerインターフェースの使い方がわからない・・・
あちこちのサイトに近い使い方は乗っているけど、この本のような実装をしているサンプルはどこにもないぞ?
UnknownCommandの実装がない。適当で問題なし
context.User.Identity.Nameを使用しているため、匿名認証では動かない。 IISの設定を統合認証に変更する
-
BasePageは分離コードクラスとして作成(BasePage.aspx.cs)して、画面部分(BasePage.aspx)を削除すればよい???
あとSQLServer(MSDE)にデータベースを作る必要がある
1:データベースの作成 webusers macrousers 2:ログインユーザに マシン名\ASPNET を追加する 3:マシン名\ASPNET ユーザに上記データベースへのアクセス許可を追加する 4:テーブルを追加する -- webusers CREATE TABLE customer ( id varchar(50) NOT NULL , email varchar(50) NOT NULL ) -- macrousers CREATE TABLE webuser ( id varchar(50) NOT NULL , email varchar(50) NOT NULL ) 5:テーブルへユーザの登録 Insert into customer values('マシン名\ログインユーザ名','customer@foo.com') Insert into webuser values('マシン名\ログインユーザ名','webuser@foo.com')
ActualPage1.aspxから<!-- #include virtual="BasePage.inc" -->で取り込んだ部分もきちんとコードビハインド側の親クラス(BasePageクラス)から