質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
IIS 7

IIS(インターネットインフォメーションサービス) 7は、 Microsoftによって開発された、Windowsの標準ウェブサーバーです。Window Server 2008 と Windows Vista向けにリリースされました。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

12524閲覧

asp セッション変数の消去について

pinchhachance

総合スコア12

IIS 7

IIS(インターネットインフォメーションサービス) 7は、 Microsoftによって開発された、Windowsの標準ウェブサーバーです。Window Server 2008 と Windows Vista向けにリリースされました。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2016/12/19 08:02

aspで構築しているシステムにおいて、あるセッション変数が消去されてしまうという現象(※原因はおそらくIISだと思われる)が度々起こっていましたので、対応する処理を追加し、テストを行いたいと考えているのですが、タイムアウト以外の方法でセッション変数が消去される状況を作り出すことは可能なのでしょうか。
もし知っている方がいらっしゃいましたら、ご教授いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/19 08:22

クラシック ASP or ASP.NET どちらでしょう?
guest

回答2

0

ベストアンサー

Session.Abandon

こういうことではなくてでしょうか。

(追記)
もう1つ、そもそもセッションが無効になればいいということであれば、ブラウザ側のセッションcookie を削除してやることで事実上セッションが切れるので、そういう方法もありますね。

投稿2016/12/19 09:56

編集2016/12/19 15:22
kaz.Suenaga

総合スコア2037

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinchhachance

2016/12/19 10:00

確かにテスト環境ならそちらのコードを追記してテストを行えば問題ないのですが、本番の環境なので、プログラムに対して、テストをするためのコードを追記することができないんです。 色々、制約が多くてすいません。。
kaz.Suenaga

2016/12/19 13:15

セッションを消すためだけのページを追加してどこかにおいて、ブラウザからそのページを直接ひらけばいいんじゃないですか?
退会済みユーザー

退会済みユーザー

2016/12/19 14:24

横から失礼します。 Session.Abandon で確実に消せると思いますが、「あるセッション変数が消去されてしまうという現象」をシミュレートするための手段としてどのように使えるのか、お考えを聞かせていただけませんか?
kaz.Suenaga

2016/12/19 15:11

「タイムアウト以外の方法でセッション変数が消去される状況」とのことでしたので、セッション自体の破棄が行われればよいのかと思い Session.Abandon をご紹介しました。 特定のセッション変数のみ消えたことの再現であれば、 http://asp.style-mods.net/ref_session/contents_remove.htm が適切でしょうか。 ある処理の途中で特定のセッション変数を消去した状況を、テストコードの追記なく行う、というのはタイミングがシビアすぎて状況の再現は困難ではないでしょうか。
退会済みユーザー

退会済みユーザー

2016/12/19 15:16

返答ありがとうございました。
pinchhachance

2016/12/20 00:05

ご回答ありがとうございます。 >セッションを消すためだけのページを追加してどこかにおいて、ブラウザからそのページを直接ひらけばいいんじゃないですか? 本番の環境なので、コンテンツ内にそのようなページを差し込むことは難しいかもしれないです。。 >ある処理の途中で特定のセッション変数を消去した状況を、テストコードの追記なく行う、とい>うのはタイミングがシビアすぎて状況の再現は困難ではないでしょうか。 やはりそうですか。テストコードの追記不可、IISが操作できない環境では厳しいですよね、、
kaz.Suenaga

2016/12/20 00:28

コンテンツ内である必要なく、同一サーバにセッション削除のコードだけ書いたASPファイルをあげておき、そのファイルを直接ブラウザでURL指定して開けばできると思いますよ。
kaz.Suenaga

2016/12/20 00:30

また、追記もしましたがサーバサイドでセッションを消す処理をできないのであれば、ブラウザ側でセッションCookieを削除することで当該セッションにつながらなくなるので事実上同義の状態は作れると思います。
pinchhachance

2016/12/20 00:51

>同一サーバにセッション削除のコードだけ書いたASPファイルをあげておき、そのファイルを直 >接ブラウザでURL指定して開けばできると思いますよ。 なるほどですね。これは検討の余地があるかもしれないです。 >ブラウザ側でセッションCookieを削除することで当該セッションにつながらなくなるので事実上>同義の状態は作れると思います。 こちらもう少しを詳細をご教授いただけないでしょうか。 知識不足で申し訳ありませんが、よろしくお願いいたします。
kaz.Suenaga

2016/12/20 01:35 編集

セッションは、Webサーバ側でセッションを開始した際に識別子として発行したSessionIDをブラウザ側にCookieとして保存させ、次回以降そのCookieと共にアクセスすることでセッションを識別しています。 これはASPに限らない多くの言語で利用されているセッションの実現方法です。 その際のCookie名はデフォルトであれば ASPSESSIONID で、このCookieをセッションcookieなどと言うことがあります。 つまりこのcookieがなければセッションを再開することはできないため、セッションに格納したデータは利用できません。 ブラウザ側でこのcookieを削除することでセッションがない状態と同義になります。 cookieを操作するツールは各ブラウザで何かしらあるかと思いますので探してください。 参考) https://msdn.microsoft.com/ja-jp/library/ms972338.aspx
pinchhachance

2016/12/20 02:13

毎回、ご丁寧に回答していただき、ありがとうございます。 cookieを操作するツールをインストールし、該当するASPSESSIONIDを消去するところまでは問題なく行えたのですが、そうすることでセッションすべてが削除されてしまうため、今回追記したのとは別の処理に入っていってしまいました。。 cookieを操作するツールにて特定のセッション変数のみを削除したセッションcookieを自分で作成することというのは可能なものなのでしょうか。
kaz.Suenaga

2016/12/20 04:29

cookie はあくまでセッションIDだけを管理するものなので、特定のセッション変数のみを削除するのはできないですね。 特定の変数のみを削除する、処理上にテストコードは追記できない、となると、やはり別ファイルでセッション削除用のファイルを置いて、そのファイルを直接たたく方法になるかと思います。 最初にご紹介した Session.Abandon ではセッション全てが消えてしまうので、 http://asp.style-mods.net/ref_session/contents_remove.htm こちらを使って行うことになると思います。
pinchhachance

2016/12/20 05:26

>別ファイルでセッション削除用のファイルを置いて、そのファイルを直接たたく方法になるかと思います。 やはりその方法しかないですよね。。 同サーバ上にテストファイルとして置くことも厳しい可能性もあるので、もう少し検討してみます。ありがとうございます。
guest

0

タイムアウト以外の方法でセッション変数が消去される状況を作り出すことは可能なのでしょうか。

クラシック ASP の場合もデフォルトでセッション情報の格納場所は in-process(ワーカープロセスが保持するメモリ空間)なので、質問者さんの ASP アプリがデフォルトの in-process を使っている場合は、ワーカープロセルのリサイクルでセッション情報が消去されると思います。

投稿2016/12/19 09:03

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pinchhachance

2016/12/19 09:12

ご回答ありがとうございます。上記、IISを操作してとリサイクルを実行するいうことですよね? 環境上、IISにて操作をすることができないんです。。
退会済みユーザー

退会済みユーザー

2016/12/19 09:35

サーバーには手が出せないと言うことでしょうか? そうだとすると原因究明は難しそうですね。 「あるセッション変数が消去されてしまうという現象」の「あるセッション変数」というのが特定のものだけで他のセッション情報は消えないのかを調べて、特定のセッション情報だけ消えるのであれば Web アプリの問題、全部消えるのであればサーバー側の問題(例:ワーカープロセスのリサイクル)ということで切り分けるところから始めるということになるのでしょうか・・・
pinchhachance

2016/12/19 09:47

そうですよね。原因はサーバ側にあることはある程度わかっているのですが、異常値(セッション変数が消えた場合)のテストを実施するにしても、現象が再現できないため困っていまして。 やはりタイムアウト、IISを操作による(ワーカープロセスのリサイクル等)以外の方法で、セッション変数を消去することは難しいですよね、、?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問