- - PR -
Global_asaxでのセッション情報の使用方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-03-26 17:50
a.aspxのPage_Loadでセッション情報を設定しますので、クライアントにa.aspxが返る前には確実に設定されています。
デフォルトでは駄目だけど設定を変えればいいということですね。 ありがとうございます。 参考になりました。 危うくはまるところでした。 | ||||||||
|
投稿日時: 2008-03-26 17:52
もとい・・・
拡張子がtxtやhtmlだとセッション情報を参照できないのでした。 もしかしてこれも設定の問題ですか? | ||||||||
|
投稿日時: 2008-03-26 18:03
開発サーバ上で、該当するファイルを置いたときでもダメなんでしょうか?
| ||||||||
|
投稿日時: 2008-03-26 18:12
txt html を試してみましたが駄目でした。 txt htmlは実際のファイルが存在しなくてもApplication_AcquireRequestStateに飛んでくるのですがセッションの取得はできません。 もしかして、本番サーバーだとマッピングを変えないといけないということから、同じサーバーなのにaspx以外の拡張子は仮想的に別サーバーという扱いになっているのではないでしょうか? | ||||||||
|
投稿日時: 2008-03-26 18:18
よく参照できないと上がっているのは、あるフレームから別のフレームもポストさせて、参照できないとなっているような? | ||||||||
|
投稿日時: 2008-03-26 18:34
ああ、なんか昔同じような回答したのをだんだん思い出してきた。。。
セッションを利用するには、そのクラスがSystem.Web.SessionState.IRequiresSessionState を継承している必要があったんでした。 aspx(Pageクラス)ならこれを継承してるんでOKなんですが、txtやhtmlだと無理ですね。 ちなみにtxtでないといけない理由はなんでしょう。 たとえばサイトの管理者はb.txtとして情報を置くけど、a.aspxではb.ashxを呼び出すようにしておいて、b.ashxでb.txtを読み込んで表示、なんて実装ができないことはないので。 #なお、ashxでセッションを利用する場合はSystem.Web.SessionState.IRequiresSessionStateを明示的に継承する必要があります。 > aspx を解釈して HTML にレンダリングしたあと、クライアントに戻すのですから、確実では? じっくり考えてみたらその通りですね。 なんか最初そこが怪しいとか思っちゃったもので。 | ||||||||
|
投稿日時: 2008-03-26 18:44
やりたかったのは似ているのですが、セキュリティ上の問題でブラウザに表示されるURLと違うファイルを見せたかったのです。 その変換をセッション情報で管理しApplication_AcquireRequestStateで処理使用と考えていました。 txtがセッションを扱えないと分かった時点でどっとねっとふぁんさんと同じ解決策しかないだろうなと考えていました。 拡張子をtxtでやりたかったのは元ファイルの拡張子がtxtの時にブラウザにaspx(ashx)の拡張子が表示されると変換しているのがあからさまになるので、なるべくその部分を伏せたかったからです。 | ||||||||
|
投稿日時: 2008-03-26 19:00
え?拡張子は、偽るのですよね? aspx の中で該当のファイルを読み込んで、リテラルに表示させてもいいのでは? |