ホーム > ASP.NET > ASP.NETでOracleのSessionStateサーバーを利用する

ASP.NETでOracleのSessionStateサーバーを利用する


さてさて、今の会社ではデータベースは基本的にOracleを利用しているということで、ASP.NETのSateServerもたしかOracleが利用できたはずと思ってちょっと調べてみました。

OTNのこのページに載っていますが、ちょとはまったのでメモを。

ORACLE_HOMEはODE.NETをインストールした場所です。各自で読み替えてください。

    SessionStateサーバー用のテーブルの作成

    ASP.NETでSessionStateサーバーを利用するには、兎にも角にもセッション情報を保存するデータストアーが必要です。OracleにSessionState用のテーブルを作るには、OracleHome以下にある次のSQLを実行します。

パス:ORACLE_HOME\ASP.NET\SQL

実行するSQL:

  • InstallOracleASPNETCommon.sql
  • InstallOracleSessionState.sql
    両方共内部で別のSQLを実行するので、sqlplusなんかでカレントディレクトリーをパスのフォルダーに移動させて各SQLを実行しないとSQLがないよっていうエラーがでるので注意しましょう。

ASP.NET側のサービスの有効化

    ASP.NETで上記のテーブルを使ってSessionを保存する場合は、Oracleの機能を有効化擦る必要があります。
    SessionState用のテーブルを作成した時と同様に、コマンドプロンプトから次の設定用のプログラムを実行します。
    パス:ORACLE_HOME\ASP.NET\bin\4\OraProvCfg.exe
    実行するコマンドライン:実際は一行です。

OraProvCfg.exe /action:config /product:aspnet /component:all
/frameworkversion:v4.0.30319
/providerpath:"ORACLE_HOME\ASP.NET\bin\4\Oracle.Web.dll"

    web.configの修正

    さて、準備ができたので、各Webアプリケーションで使えるようにweb.configを修正しましょう。

    修正ポイントはデータベース接続用のconnectionStringとsessionStateの部分です。

    <configuration>
      <connectionStrings>
        <add name="OracleAspNetConString" connectionString="DATA SOURCE=接続文字列" />
      </connectionStrings>
    
      <system.web>
        <sessionState mode="Custom" customProvider="MyOracleSessionStateStore">
            <providers>
              <add name="MyOracleSessionStateStore"
                   type="Oracle.Web.SessionState.OracleSessionStateStore, 
    Oracle.Web, Version=4.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342"
                   connectionStringName="OracleAspNetConString"/>
            </providers>
          </sessionState>
      </system.web>
    </configuration>
    
    カテゴリー:ASP.NET タグ: ,
    1. sanai
      2011年3月2日 10:17 AM

      このページを参考にさせていただきました。ありがとうございます。
      突然ですがお聞きしたいことがございましてコメントさせていただきます。

      現在以下の環境でシステムを動かしています
      データベース:oracle 10g
      データベースのあるサーバー:Windows Server 2003 R2
      開発マシン:Windows 7
      開発ツール:Visual Studio 2010

      クライアントでテスト中なのですが、web.configを修正したところ
      「’connectionStringName’属性はしようできません」
      という警告が出ます。
      ただ、テーブルにセッション情報が格納されるので設定はできているようです。
      この警告が出る原因、消し方がお分かりでしたらご享受いただけますでしょうか。
      よろしくお願いします。

    2. 2011年3月2日 10:52 AM

      sanaiさんこんにちは

      その警告メッセージの消し方はちょっとわかりません。
      どこかにスキーマ情報があれば、web.configのxmlnsに指定してあげれば消えるかもしれませんが、調べていません。

      まぁ単に、web.configのスキーマーに /configuration/system.web/sessionState/providers/add にconnectionStringが定義されていので、Visual Studioが注意してくれているだけです。
      気にしないでいいと思います。Oracleのセッションプロバイダーに限らず、自分で独自のConfigSectionを追加する場合はもれなく怒られますし。。。

      • sanai
        2011年3月2日 11:29 AM

        ありがとうございました。
        また何かあればよろしくお願いします。

    3. 1getzusaa
      2014年5月30日 2:53 PM

      初めまして、私もこの記事を参考にさせていただきました。
      最初 SYS アカウントでスクリプトを実行してしまい、接続できずに暫く嵌まりましたが何とか解決したと思います、たぶんきっと
      その際、以下サイト(英文)が役立ちましたのでご報告させていただきます
      http://docs.oracle.com/cd/B28359_01/appdev.111/b28844/installation.htm#TDPNG20000

    1. 2011年2月28日 12:15 PM

    コメントを残す

    以下に詳細を記入するか、アイコンをクリックしてログインしてください。

    WordPress.com ロゴ

    WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

    Twitter 画像

    Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

    Facebook の写真

    Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

    Google+ フォト

    Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

    %s と連携中

    %d人のブロガーが「いいね」をつけました。