フロントコントローラーパターン実装 やっと動く

.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クラス)からにセットできているのが不思議だ・・・