- PR -

ASPとASP.NETのセッション情報の取り扱いについて

投稿者投稿内容
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-09-04 03:34
単なる思い付きで、試したわけじゃないんですが、
セッションIDが格納されるクッキーのキー名を昔のASPと同じ(ASPSESSIONIDかな?)にしたら
できないですかね?(別のドメインにかかれちゃうのかな)

.NET 2.0であればweb.configにあるsessionStateのcookieName属性で指定できるようです。

[追記]
ん、何を考えていたんだ?私は。セッションIDを共有したってメモリの中身を共有しなきゃできないじゃまいか

[ メッセージ編集済み 編集者: べる 編集日時 2007-09-05 08:44 ]
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2007-09-04 10:01
引用:

では、ASP との相互運用を目的した記事は、ないでしょうか?
(ASP側での読み取りや、保存の方法。)
http://www.atmarkit.co.jp/fdotnet/dotnettips/186aspsessql/aspsessql.html
の続きのようなもの)



SQL State の仕組みを勝手に ASP から利用するということでしょうか。
多分ですが、Microsoft はそういう使われ方を想定していないかと(サポート外)。
それでも使いたいのであれば、結局は技術的な課題を一つずつクリアしていく必要があるでしょう。その際には MSDN の記事は参考になると思いますが。。。

MSDN の記事では、 SQL State を使わず独自のテーブルを定義して連携していますが、連携が必要な情報は多くないだろうと推測します。.NET のあらゆるオブジェクトを ASP 側に連携できる訳もその必要もありません。逆もまた同様です(.NET側で COM オブジェクトを扱うこと自体は可能ですが)。この記事は結構お手軽なソリューションだと思います。

おそらく、既存システムになるべく手を加えたくない為だろうと思いますが、そもそも、なんらかの設定をしたら即連携できる、というような簡単な話ではありませんから。
tkrn
ベテラン
会議室デビュー日: 2005/10/25
投稿数: 61
投稿日時: 2007-09-04 10:18
私も調べた事がありましたが結局断念しました。
連携する事を考えるよりも、全部ASP.NETで作り直すか、全部ASPで作ってしまう方が現実的かもしれません。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-05 06:19
引用:

では、ASP との相互運用を目的した記事は、ないでしょうか?
(ASP側での読み取りや、保存の方法。)
http://www.atmarkit.co.jp/fdotnet/dotnettips/186aspsessql/aspsessql.html
の続きのようなもの)


続き、ですか。おもしろい考え方だなぁ。
 @IT の記事は、session state に3つのモードがあることの説明に過ぎません。そもそも論として、この記事を「ASP と ASP.NET の相互運用」として見ることが間違っています。


 もし、「既存の php で作られたアプリを、Java で作り直したい。しかし、全部を一度にはできないので、共存させながら、少しずつ」という案件であれば、「セッション情報を共有したい」という考え方は出てこないか、あるいは必要な情報はいったんファイルに落とすなどの方法になるでしょう。
 ASP と ASP.NET の共存は、php と Java の共存と同じと考えて差し支えありません。名前にごまかされず、「まったく違うもの」という認識の元に、tkrnさんとまるくさんの言葉を読み直してみてください。
るぷ犬
常連さん
会議室デビュー日: 2004/11/10
投稿数: 46
投稿日時: 2007-09-05 10:57
みなさん、ご返答ありがとうございます。


tkrnさん>

『Accessさんの方法』は、頭の片隅には合ったんですが、
採用する優先順位を低くしていました。

>私も調べた事がありましたが結局断念しました。

よく、ご存知の方が断念するぐらいなのですから、
私もあきらめた方がいいようですね。

>連携する事を考えるよりも、全部ASP.NETで作り直すか、全部ASPで作ってしまう方が現実的かもしれません。
私も、そちらの方が早いかなとは思ってはいました。

技術的に完璧に無理という理由があれば、
そういう話になるとは思うのですが。。。

知らない人間を納得させる何か、説得力のある理由はありますでしょうか?



べるさん>

>メモリの中身を共有しなきゃ
だから、この場合はSQLSERVERにより経由させて、
データの取得を行うわけですよね?
(結局、ASPとASPXのプロセスが、違うからメモリの共有はできない、と
理解しております。)


まるくさん>

>SQL State の仕組みを勝手に ASP から利用するということでしょうか。
いえ、そういうわけではありせん。

ASPでは使えないと思っておりますので、同じ方法はとらない
と考えております。
よって、ASPからは普通にSQLなどで、DBにアクセスするという方法しか
無いのかなと思っています。


ASPXでは『SQL State』を使用、
ASPではADOなどで、DBにアクセス


と考えており、
ですが、ASPでいざ、テーブルを参照しようとすると、
セッション名や、セッションの内容がどこに保存されているか
わからず(予想ではimage型かbinary型のカラム)、
どうやって、取得すればいいかが分からなかったのです。



>おそらく、既存システムになるべく手を加えたくない為だろうと思いますが、
そのとおりです。



Jittaさん>

>続き、ですか。おもしろい考え方だなぁ。
> @IT の記事は、session state に3つのモードがあることの説明に過ぎません。そもそも論として、この記事を「ASP と >ASP.NET の相互運用」として見ることが間違っています。

承知いたしました。
ただ、似たような記事が他であって、ご存知であれば教えていただきたいな、と思いました。



>ASP と ASP.NET の共存は、php と Java の共存と同じと考えて差し支えありません。名前にごまかされず、「まったく違>うもの」という認識の元に、tkrnさんとまるくさんの言葉を読み直してみてください。

一応、違うものというのは薄々は知っておりました。(理由とかまでは知らないですが。。。)
ですので、簡単にはいかないとは思っていました。

二つの既存システムを統合(ASPとASPX)という際に
どこまで、ASPとASPXが共存できるか、
もしくは、何が(別物を経由などしても)共有できるか、
その辺次第なのですが。。。


「まったく違うもの」とすると、tkrnさんにご質問したような
方向になっていくわけなのです。
tkrn
ベテラン
会議室デビュー日: 2005/10/25
投稿数: 61
投稿日時: 2007-09-05 11:08
引用:

知らない人間を納得させる何か、説得力のある理由はありますでしょうか?


それは既にJittaさんが答えていますよ。
引用:

ASP と ASP.NET の共存は、php と Java の共存と同じと考えて差し支えありません。


名前は似ていてもアーキテクチャが全く異なると。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-09-05 15:30
引用:
技術的に完璧に無理という理由があれば、
そういう話になるとは思うのですが。。。

「完璧に」じゃなくても、同等のしくみを作るのに「全部ASP.NETで作り直すよりもコストが
かかってしまう」とか「費用対効果を考えると(.NETで作り直しとはいかなくても)代替案を
使った方がいい」とかいう結論があればいいんじゃないですかね。

引用:
>メモリの中身を共有しなきゃ
だから、この場合はSQLSERVERにより経由させて、
データの取得を行うわけですよね?
(結局、ASPとASPXのプロセスが、違うからメモリの共有はできない、と
理解しております。)

ここらへんは私の勘違いです。
(話の流れについては、このスレとリンク先を熟読していないせいってのもありますが;)
ただ、双方がデータベースにセッション情報を格納できたとしても(レガシaspがそれをできるかは
知りませんが)、仕組み(保存先とか)が違う以上、シームレスなセッション共有は無理ですね。

引用:
ですが、ASPでいざ、テーブルを参照しようとすると、
セッション名や、セッションの内容がどこに保存されているか
わからず(予想ではimage型かbinary型のカラム)、
どうやって、取得すればいいかが分からなかったのです。

スレッドの頭をみると、聞きたいのはここだったのですよね(意外とだれも触れていない)。
最初にご提示なさった記事にデータが格納されている様子をみるところまで載っていますね。
実際にやってみましたが、セッション変数が格納されるカラムは(テーブルまではこの記事をよめばわかるとして)
SessionItemShortまたはSessionItemLongです。どういう条件で切り替わるのかはわかりませんが
当方ではSessionItemShortに格納されていました。UTF-8として文字列化すると
特に暗号化されたわけでもないそのままの文字列が取得できます。
変数ごとではなくセッションごとのレコードであるし、よくわからない制御文字も入っているので
これをaspからとろうとするのは茨の道だとおもいます。ただ、仮にできたとして、
これって「SQL State の仕組みを勝手に ASP から利用する」ですよね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-05 18:54
(べるさんに続けて)

だから

VB.NETでCOMコントロールを作り、VB.NETでシリアル化/シリアル化解除を行いましょう

って記事になっているのでは?




私は5回読んで理解できてきました。何回か繰り返し読んでみましょう。

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