Windows Azure環境での実行
開発環境で簡単な動作確認が取れたところで、アプリケーションをWindows Azure上に配置します。
[1]接続文字列を変更する
Windows Azure環境からは、SQL Azureに接続するよう構成設定を行います。図4のからコピーした接続文字列を、connectionStrings要素配下、add要素のconnectionString属性部分に貼り付けます。パスワード部分は適宜修正してください。ASP.NET Universal ProvidersはSQL Azureへの接続に、複数のアクティブな結果セット(注7)利用します。これを有効にするために「MultipleActiveResultSets=True」の追加も必要となります(リスト2)。
Multiple Active Result Sets(MARS)と呼ばれます。
<connectionStrings> … <!-- (1) 接続先の設定--> <add name="DefaultConnection" connectionString="Server=tcp:rmru2y6ldc.database.windows.net,1433;Database=database1;User ID=manager@rmru2y6ldc;Password=p@ssword55;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web>
[2]アプリケーションを実行する
アプリケーションを配置し実行します。複数インスタンスからセッション情報が共有されているか確認する意味からも、インスタンス数を複数(2程度)にして配置してみましょう。開発環境と同じように、正しくセッション情報が共有できているか確認してみてください(図8)。
[3]セッションデータの確認
最後に、SQL Azureに接続し、セッション情報を確認してみましょう。SQL Azure管理ツールでデータベースにアクセスします。図3から、[データベース]-[管理]ボタンをクリックし、SQL Azure管理ポータルを開きます。Sessionsテーブルに、情報が格納されていることが確認できます(図9)。
ASP.NET Universal Providersはセッション管理の他にも、メンバーシップ、ロール、プロファイルの各プロバイダーが含まれています。セッション管理と接続文字列を共用しているため、本稿の設定を行えば利用できるようになります。
まとめ
今回、Windows Azure上でセッション管理する方法をいくつか紹介しましたが、いかがでしょうか。いずれも一長一短あり、要件によって選択基準が変わってくることと思います。また、ASP.NET Universal ProvidersやWindows Azureストレージなどは、カスタムセッション状態プロバイダーのソースが公開されています。これをベースにチューニングするなどの方法を取ることもできるでしょう。