Seasarプロジェクト ＞ Seasar.NETプロジェクト ＞ S2Container.NET ＞ ASP.NETでの利用

# 目次

上へ

- S2HttpModuleを追加する
- Global.asaxを編集する
- ASP.NETのWebフォームを登録する
- リクエストのバインディング

# S2HttpModuleを追加する

上へ

これまでは、.NET Frameworkアプリケーションで、明示的にS2Containerを作成していましたが、 Webアプリケーションの場合、誰がS2Containerを作成するのでしょうか。その目的のために次のクラスが用意されています。

- Seasar.Framework.Container.Web.S2HttpModule

S2HttpModuleを使うためにはWeb.configに次の項目を記述し、ASP.NETアプリケーションにS2HttpModuleを追加します。 source/Seasar/Seasar.Framework.Container/Web/Web.configに記述例もあります。

        <httpModules>
         <add name="S2HttpModule"
             type="Seasar.Framework.Container.Web.S2HttpModule, Seasar" />
        </httpModules>

アプリケーション構成ファイル に定義するseasarセクションのconfigPath要素でメインとなるS2Container定義のパスを指定します。S2HttpModuleが起動した後は、 次のメソッドでS2Containerのインスタンスを取得することができます。

- Seasar.Framework.Container.Factory.SingletonS2ContainerFactory#GetContainer()

S2HttpModuleを使っている場合、HttpApplicationをhttpApplicationという名前のコンポーネントとして アクセスできるようになります。

# Global.asaxを編集する(バージョン1.1.1以降)

上へ

Global.asaxのApplication_StartメソッドでS2Containerの初期化、 Application_EndメソッドでS2Containerの破棄を行うように編集します。 SingletonS2ContainerFactoryクラスはSeasar.Framework.Container.Factory名前空間に存在します。

C#

    protected void Application_Start(Object sender, EventArgs e)
    {
        SingletonS2ContainerFactory.Init();
    }

    protected void Application_End(Object sender, EventArgs e)
    {
        SingletonS2ContainerFactory.Destroy();
    }

VB

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
       SingletonS2ContainerFactory.Init()
    End Sub

    Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
       SingletonS2ContainerFactory.Destroy();
    End Sub

# ASP.NETのWebフォームを登録する

上へ

ASP.NETのWebフォームをS2Containerに登録すると、Webフォームに対してDependency Injection を行うことができます。Webフォームの登録は以下のように設定します。

        <component name="/Path/WebForm1.aspx" instance="outer" />

name属性にはWebフォームへの要求の仮想パスを指定します。 instance属性にはouterを指定します。（S2ContainerでWebフォームのインスタンスを管理しないためです。）

# リクエストのバインディング

上へ

コンポーネントに対して、HttpRequestをバインディングすることが出来ます。 HttpRequest、HttpResponse、HttpSessionState、HttpApplicationは、それぞれrequest、 response、session、httpApplicationという名前のコンポーネントとして登録されています。 プロパティ・バインディングやコンストラクタ・バインディングで使ってください。自動バインディングは行われません。 また、S2HttpModuleをWeb.configに定義する必要があります。

© Copyright The Seasar Project and the others 2004-2009, all rights reserved.