- PR -

複数プロジェクトでのセッション情報の共有

1
投稿者投稿内容
あたろう
会議室デビュー日: 2007/05/29
投稿数: 12
投稿日時: 2007-06-07 20:29
お世話になります

Visual Studio2005 TeamEdition
WindowsXP
の環境で複数チームで作業しております。

VisualStudio2005では新しくWebサイトを作成する際に、
ファイル→新しいWebサイトを選択しますよね?

(新しいWebアプリケーションとは全く別の物のようです。
新しいWebアプリケーションはマイクロソフトの技術
サイトにはVS2003からの移行の為に使用すると記述があります。
つまりWebアプリケーションでは作成しないのが普通ということ?)

そこで、複数チームでの開発の為、新しいWebサイトを作成すると
自動的に追加される、1つのソリューションに複数のWebサイトを
作成したいと考えています。

この時、Webサイト間でセッションを共有できるかを知りたいです。
VS2003での技術情報は発見いたしました。ただし、Webアプリケーション
であり、VS2005のようにプロジェクトが存在しないWebサイトの作成では
ありませんでした。

Webサイト間でセッション情報を共有することは可能なのでしょうか?
情報持っておられる方、ご教受のほどよろしくお願いいたします。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-06-07 23:50
異なるのは Web site ですか?それとも virtual directory?

まあ、どちらにしろ結果は同じです。

Session は基本的に virtual directory に紐づく application 毎に存在しているはずです。

それ以外で session を共有するとなると default で用意されている方法以外の方法でゴリゴリやるしかないんじゃないと思います。

_________________
あたろう
会議室デビュー日: 2007/05/29
投稿数: 12
投稿日時: 2007-06-08 13:19
>ちゃっぴさん

ありがとうございます。参考になりました
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-06-08 21:50
 VS.NET での説明を、もう一度よく見直して欲しいのですが、同じセッション情報が使えないのは、IIS にて別々のアプリケーションを構成したときです。

 VS2005 で、IIS 以外のアプリケーション サーバを動かして Web アプリケーションを作るのは、ロックダウンにより、IIS がインストールされていないことを前提とするためです。
開発環境を、よりセキュアにするための方法です。
ですから、「社内イントラならセキュリティ上のことは気にしなくて良い」など、セキュリティ上のリスクが低いなら、VS.NET の時と同じように作ってかまいません。
やっぱりセキュリティ的なことも意識したいなら、まず誰かが一人ですべてのプロジェクトを作ります。
そして、VSS などの、ソース管理システムに登録します。
そして、プロジェクトごとに担当者を分けます。
このとき、最終的には IIS に乗るのですから、プロジェクトが1つのディレクトリ以下にあること、プロジェクト単位ではアプリケーションを構成しないことなど、VS.NET の時と同じです。
_________________
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2007-06-08 23:40
NAL-6295です。

ASP.NET2.0でも1.1と同じく

machineKey 要素 (ASP.NET 設定スキーマ)
http://msdn2.microsoft.com/ja-jp/library/w8h3skw9(VS.80).aspx

で、異なるwebアプリ間でも同じセッション情報が使えます。

今回の場合、最終的に一つのアプリケーションに纏めるのであれば、その必要はありません。
あたろう
会議室デビュー日: 2007/05/29
投稿数: 12
投稿日時: 2007-06-11 18:27
>IIS にて別々のアプリケーションを構成したときです

ということはIISのサーバーの設定で対応するということでしょうか?
実際に試してみようと思うのですが、IISでの設定方法がうまくいかないので
ご教授していただけませんでしょうか?
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2007-06-11 20:05
>>NAL-6295氏
ん、恐らく「セッションは」その方法でもできないんじゃないでしょうか。SQL モードを使ってみると中身がある程度わかると思いますが、セッションを保存するときにアプリケーションを識別するものも同時に格納されていたかと。認証情報とかなら暗号化とか復元とかその辺を一致させるだけでよいのですが。

ここ

引用:

ApplicationName

セッションのスコープを維持するため、セッション状態ストア プロバイダはアプリケーションごとに固有のセッション情報を格納します。これにより、重複するセッション ID が検出された場合でも、複数の ASP.NET アプリケーションは、競合することなく同じデータ ソースを使用できます。

セッション状態ストア プロバイダはアプリケーションごとに固有のセッション情報を格納するため、データ スキーマ、クエリ、および更新には必ずアプリケーション名を含める必要があります。たとえば、次のコマンドは、セッション データをデータベースから取得するために使用されます。




この辺?

これはどっちかというとスコープ保護のポリシー(グローバル変数が否定されるようなものです)っぽいので、回避するのは避けたほうがよさそうですけど、カスタムなストアを実装すればできるんじゃないでしょうか。まぁはじめからアプリ分けなきゃいいんですけど(意義もあまりなさそうだし。Jittaさんのあげた方法がたぶんお勧め)。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-06-13 14:37
引用:

あたろうさんの書き込み (2007-06-11 18:27) より:
ということはIISのサーバーの設定で対応するということでしょうか?
実際に試してみようと思うのですが、IISでの設定方法がうまくいかないので
ご教授していただけませんでしょうか?


 [コントロールパネル]の[管理ツール]から[インターネット インフォメーション サービス]を開いて、該当するディレクトリを右クリック、[プロパティ]を選択する。[ディレクトリ]タブの[アプリケーションの設定]で、[アプリケーション名]の右にあるボタンが「作成」または「削除」というキャプションになっています。これで、「作成」するか、「削除」するか選びます。
 [インターネット インフォメーション サービス]のツリーでは、アプリケーションとそうでないディレクトリは、アイコンが違うのですぐわかります。

_________________
1

スキルアップ/キャリアアップ(JOB@IT)