C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ASP.NETで、セッションタイムアウトになる条件

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■82972 / inTopicNo.1)  ASP.NETで、セッションタイムアウトになる条件
  
□投稿者/ あさ (37回)-(2017/02/23(Thu) 15:07:47)

分類:[.NET 全般] 

お世話になります。

Windows10、ASP.NET(VB)、.NET Framework4.6、ローカルIISで開発しています。
WebサーバーOSはWindowsServer2012R2です。

Webページのタイムアウトについてです。

IISマネージャーの[セッション状態]で、タイムアウト=デフォルトで「20分」になっています。

Webページに、TextBox、Buttonがあるとします。

Webページにログインして、そのまま何もせず放置すれば、20分経過するとセッションが破棄、ログアウトの状態になり、

Buttonを押しても正常に実行されないと思います。

ここで質問です。

20分以内に、TextBox(AutoPostBack=False)の内容を追加したり、削ったりしても、

20分以内にButtonを押さない限りは、20分後にタイムアウトになってしまうようなのですが、

これは正常な反応ということでよろしいでしょうか。

20分以内にButtonを押すか、TextBoxのAutoPostBack=Trueにしなければ、

TextBoxの中身をどんなにいじっても、

それはアイドル状態とみなされるという認識でよろしいでしょうか。

よろしくお願いします。


引用返信 編集キー/
■82974 / inTopicNo.2)  Re[1]: ASP.NETで、セッションタイムアウトになる条件
□投稿者/ WebSurfer (1149回)-(2017/02/23(Thu) 16:09:31)
No82972 (あさ さん) に返信

ASP.NET の場合は、セッションの「タイムアウト」状態とフォーム認証の「ログアウト」状態は違います。
まず、そこの理解はいいでしょうか?

質問者さんの理解に曖昧な点があれば以下の記事を読んでください。

セッションタイムアウトとログアウト
http://surferonwww.info/BlogEngine/post/2013/06/29/session-timeout-and-logout.aspx

> Webページにログインして、そのまま何もせず放置すれば、20分経過するとセッションが破棄、
> ログアウトの状態になり、Buttonを押しても正常に実行されないと思います。

何をもって「正常」と言われているのか不明ですが・・・

セッションがタイムアウト(デフォルトで 20 分)しているが、認証チケットはまだ有効な場合(その
ページに匿名アクセスが許可されていれば認証チケットは関係ありませんが)、Button クリックでポ
ストバックがかかってそのページが要求され、サーバーはその要求を受けて処理します。

ただし、その処理の過程でセッションのデータを使っている場合、セッション状態が破棄されているこ
とによる影響はあるとは思いますが。でも、その可能性があることを考えて質問者さんがそのページを
作れば、セッション状態が破棄されていても、それなりに「正常」処理することはできるかも。

認証チケットが期限切れの場合、セッションがタイムアウトしているか否かに関係なく、そのページに
匿名アクセスが許可されていなければ、Login ページにリダイレクトされると思います。(普通に作れ
ばの話ですが)

> 20分以内に、TextBox(AutoPostBack=False)の内容を追加したり、削ったりしても、
> 20分以内にButtonを押さない限りは、20分後にタイムアウトになってしまうようなのですが、
> これは正常な反応ということでよろしいでしょうか。

そうです。

TextBox(AutoPostBack=False)の場合は、ブラウザでテキストボックスの内容をどのように変更しよう
とそれはブラウザ側だけの話で、Web サーバーは何も関知しません。

セッションの有効期限を延ばすことができるのは Web サーバーのみですので、それは「正常な反応」です。

TextBox の AutoPostBack プロパティを true にすれば、ブラウザ上でテキストボックスの内容を変更
してフォーカスをはずせばポストバックがかかって、サーバーが要求を受けるので、その際セッション
タイムアウトが延長されます。

要するに、サーバーが何の要求も受けない状態がセッションタイムアウトに設定した時間以上続くとセ
ッション状態は破棄されるということです。
引用返信 編集キー/
■83002 / inTopicNo.3)  Re[2]: ASP.NETで、セッションタイムアウトになる条件
□投稿者/ あさ (38回)-(2017/02/25(Sat) 19:21:40)
No82974 (WebSurfer さん) に返信
> ■No82972 (あさ さん) に返信

ありがとうございます。

> ASP.NET の場合は、セッションの「タイムアウト」状態とフォーム認証の「ログアウト」状態は違います。
> まず、そこの理解はいいでしょうか?

記事を拝読しました。

現在開発しているシステムは、一時保育に関するものでして、
会員は各お子様、
連絡先は親御様のメールアドレス、になっています。
同じ親御様であれば、複数のお子様がいても、メールアドレスは共通です。
このため、メールアドレスを一意のユーザーIDに使用できません。

このことが理由で、現状では、フォーム認証ではなく、独自のプログラムコードでの認証を行なっています。

データベースに認証情報を保持して、問い合わせ、ログインしたらSession変数でユーザーのIDを保持しています。
Session変数がNothingでなければログイン中、Nothingであればログアウト中、という状態です。
この方法ですと、セッションがタイムアウトした場合、Session変数もNothingになり、
実質的にログアウト状態になります。

> ただし、その処理の過程でセッションのデータを使っている場合、セッション状態が破棄されているこ
> とによる影響はあるとは思いますが。でも、その可能性があることを考えて質問者さんがそのページを
> 作れば、セッション状態が破棄されていても、それなりに「正常」処理することはできるかも。

そうですね。

うちの現状に照らし合わせて考えてみますと、ボタンを押した時の処理に、Session変数も使用しているため、
タイムアウトでSession変数が破棄されますと、処理時にエラーになります。
Session変数がNothingの場合の処理の分岐を、プログラムに追加します。

> 要するに、サーバーが何の要求も受けない状態がセッションタイムアウトに設定した時間以上続くとセ
> ッション状態は破棄されるということです。

ありがとうございます。

ページによっては、IISのタイムアウト設定(デフォルト20分)が短い場合があります。
この場合、ページのロード時に、Session.timeout=数値、を設定すれば、
このページに関しては、IISの設定値よりも優先されるようです。

http://d.hatena.ne.jp/aspx/20071226/1198654988


引用返信 編集キー/
■83006 / inTopicNo.4)  Re[3]: ASP.NETで、セッションタイムアウトになる条件
□投稿者/ WebSurfer (1150回)-(2017/02/25(Sat) 20:14:58)
No83002 (あさ さん) に返信

> 現状では、フォーム認証ではなく、独自のプログラムコードでの認証を行なっています。

それ、最初の質問の一行目に書きましょうね。何なのって感じです。

引用返信 編集キー/
■83014 / inTopicNo.5)  Re[4]: ASP.NETで、セッションタイムアウトになる条件
□投稿者/ あさ (39回)-(2017/02/26(Sun) 11:05:53)
No83006 (WebSurfer さん) に返信

> それ、最初の質問の一行目に書きましょうね。何なのって感じです。

失礼しました。

フォーム認証という仕組みの存在について、
よく知らなかったものでして。

今後気を付けます。
解決済み
引用返信 編集キー/
■83015 / inTopicNo.6)  Re[5]: ASP.NETで、セッションタイムアウトになる条件
□投稿者/ WebSurfer (1151回)-(2017/02/26(Sun) 12:44:07)
No83014 (あさ さん) に返信

> フォーム認証という仕組みの存在について、よく知らなかったものでして。

ASP.NET 標準のフォーム認証を使って質問者さんのやりたいことができないか検討された
でしょうか?

「よく知らなかった」ということは検討されてないように思えますが、もしそうであれば
一度検討してみることをお勧めします。

メールアドレスを ID に使用するのは困るということのようですが、標準のフォーム認証
でその必要はないはずです。

(ASP.NET Identity で一時メールアドレスを ID に使う時期があったようですが、自分が
最近使い始めた Visual Studio 2015 Community Update 3 では、そのテンプレートで自動
生成される ASP.NET Identity ベースのフォーム認証を使うインターネットアプリを見ると、
昔ながらのユーザーが決めた独自 ID を使うようになっています。それに加えてメールアド
レスも登録できるようです)

解決済み
引用返信 編集キー/
■83016 / inTopicNo.7)  Re[6]: ASP.NETで、セッションタイムアウトになる条件
□投稿者/ あさ (40回)-(2017/02/26(Sun) 17:38:17)
No83015 (WebSurfer さん) に返信

> 「よく知らなかった」ということは検討されてないように思えますが、もしそうであれば
> 一度検討してみることをお勧めします。
>
> メールアドレスを ID に使用するのは困るということのようですが、標準のフォーム認証
> でその必要はないはずです。
>
> (ASP.NET Identity で一時メールアドレスを ID に使う時期があったようですが、自分が
> 最近使い始めた Visual Studio 2015 Community Update 3 では、そのテンプレートで自動
> 生成される ASP.NET Identity ベースのフォーム認証を使うインターネットアプリを見ると、
> 昔ながらのユーザーが決めた独自 ID を使うようになっています。それに加えてメールアド
> レスも登録できるようです)

ありがとうございます。

検討してみます。
解決済み
引用返信 編集キー/
■83031 / inTopicNo.8)  Re[7]: ASP.NETで、セッションタイムアウトになる条件
□投稿者/ WebSurfer (1155回)-(2017/02/27(Mon) 21:51:20)
No83016 (あさ さん) に返信

先のレスで、

> ASP.NET Identity で一時メールアドレスを ID に使う時期があったようですが、自分が
> 最近使い始めた Visual Studio 2015 Community Update 3 では、そのテンプレートで自動
> 生成される ASP.NET Identity ベースのフォーム認証を使うインターネットアプリを見ると、
> 昔ながらのユーザーが決めた独自 ID を使うようになっています。

と書きましたが、それは Web サイトプロジェクトのテンプレートで作った時の話で、もう少
し調べてみたら Web アプリケーションプロジェクトのテンプレートで作ると、ID は email
になってました。(Web Forms, MVC 共に)

登録・ログイン関係のコードもかなり違ってました。

何故違うのか理由不明ですが、自分が調べた限り Web サイトプロジェクトのコードであれば、
従来どおりの ID(email アドレスでないユーザー名)とパスワードでユーザー認証には問題
なかったです。

まだ調べ切れていませんが、コードの書き方しだいで(たぶん、ASP.NET Identity 2 の新機
能を使わなければ)従来どおりの ID が使えるような気がします。
引用返信 編集キー/
■83032 / inTopicNo.9)  Re[8]: ASP.NETで、セッションタイムアウトになる条件
□投稿者/ WebSurfer (1156回)-(2017/02/27(Mon) 21:52:17)
解決済みマークを付け忘れました。すみません
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ