teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

例外が発生したコードとセッション管理がInProcモードであることを追加しました。

2020/08/21 04:41

投稿

WhiteHorse
WhiteHorse

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
  ASP.NET MVC5を使用してWebシステムを作成しています。質問はセッションタイムアウトの処理方法です。
4
-
4
+ セッション管理はInProcモードです。
5
5
  セッションタイムアウトはデフォルトの20分です。
6
6
  セッションタイムアウトのチェックはアクションフィルター(OnActionExecuting)を使用しています。アクションフィルターは、セッションタイムアウトが発生すると、強制的にセッションタイムアウト画面に遷移します。このため、セッションタイムアウトが発生すると、URLに示すControllerのアクションメソッドには制御は移りません。
7
7
 
@@ -42,7 +42,42 @@
42
42
  }
43
43
  }
44
44
  ```
45
+ ### エラーが発生したコード
45
46
 
47
+ ```
48
+ public ActionResult RegisterCommon(DateTime displayDay)
49
+ {
50
+
51
+ // 担当を自由に変更できる期間は2週間前まで
52
+ var timeLimitDay = displayDay.AddDays(-14);
53
+ // 本日
54
+ var today = DateTime.Now.ToUniversalTime().AddHours(9).Date;
55
+ // ユーザのIDを読み取る
56
+ var membershipId = (string)Session["MEMBERSHIP_ID"];
57
+ // 代行処理の場合、代行される人のIDを設定
58
+ if ((String)Session["SUBSTITUTED_ID"] != null)
59
+ {
60
+ membershipId = (string)Session["SUBSTITUTED_ID"];
61
+ }
62
+ // 事務局か?
63
+ var isAdministrator = false;
64
+ if ((bool)Session["ADMINISTRATOR"]) <<<--ここで例外が発生
65
+ isAdministrator = true;
66
+
67
+ // 指定日の担当登録を全て読み取る
68
+ var tantoItemsInDay = new List<Tanto>();
69
+ tantoItemsInDay = db.TantoTbl
70
+ .Where(item => item.Date == displayDay)
71
+ .ToList();
72
+
73
+ ・・・・・・・
74
+
75
+ return View("Register", model);
76
+ }
77
+
78
+ ```
79
+
80
+
46
81
  ### 試したこと
47
82
 
48
83
  エラーが発生しているControllerアクションメソッドでセッションタイムアウトを発生させて確認しましたが、正しくセッションタイムアウトを認識し、Null参照エラーは発生しません。

2

stackOverflowに掲載されたコードへのリンクを付けました。

2020/08/21 04:41

投稿

WhiteHorse
WhiteHorse

スコア1

title CHANGED
File without changes
body CHANGED
@@ -47,8 +47,7 @@
47
47
 
48
48
  エラーが発生しているControllerアクションメソッドでセッションタイムアウトを発生させて確認しましたが、正しくセッションタイムアウトを認識し、Null参照エラーは発生しません。
49
49
  疑わしいのは、セッションタイムアウト判定アルゴリズムと睨んでいるのですが、ASP.NETにおけるセッションタイムアウト処理の情報が少なく、悩んでいます。
50
- なお、使用しているセッションタイムアウト判定アルゴリズムはstackOverflowに掲載されていたコードを使っています。
51
- https://stackoverflow.com/questions/42150933/asp-net-sessionid-cookie-behavior-explanation
50
+ なお、使用しているセッションタイムアウト判定アルゴリズムは[stackOverflowに掲載されていたコード](https://stackoverflow.com/questions/42150933/asp-net-sessionid-cookie-behavior-explanation)を使っています。
52
51
 
53
52
  ### 補足情報(FW/ツールのバージョンなど)
54
53
 

1

以下を変更しています。(1)ソースコードをバッククオートで囲み、インデントを付けました。(2)参照したコードのURLを記載しました。

2020/08/20 23:51

投稿

WhiteHorse
WhiteHorse

スコア1

title CHANGED
File without changes
body CHANGED
@@ -15,7 +15,7 @@
15
15
  ### 該当のソースコード
16
16
  アクションフィルタのコードです。
17
17
 
18
- public class SessionExpireFilterAttribute :ActionFilterAttribute
18
+ ``` public class SessionExpireFilterAttribute :ActionFilterAttribute
19
19
  {
20
20
  public override void OnActionExecuting(ActionExecutingContext filterContext)
21
21
  {
@@ -41,15 +41,15 @@
41
41
 
42
42
  }
43
43
  }
44
+ ```
44
45
 
45
-
46
46
  ### 試したこと
47
47
 
48
48
  エラーが発生しているControllerアクションメソッドでセッションタイムアウトを発生させて確認しましたが、正しくセッションタイムアウトを認識し、Null参照エラーは発生しません。
49
49
  疑わしいのは、セッションタイムアウト判定アルゴリズムと睨んでいるのですが、ASP.NETにおけるセッションタイムアウト処理の情報が少なく、悩んでいます。
50
50
  なお、使用しているセッションタイムアウト判定アルゴリズムはstackOverflowに掲載されていたコードを使っています。
51
+ https://stackoverflow.com/questions/42150933/asp-net-sessionid-cookie-behavior-explanation
51
52
 
52
-
53
53
  ### 補足情報(FW/ツールのバージョンなど)
54
54
 
55
55
  ここにより詳細な情報を記載してください。