回答編集履歴

3

具体的に今回の問題について追記した。

2015/10/13 08:43

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -13,6 +13,24 @@
13
13
  まず、POSTした後に、クエリストリングにAspxAutoDetectCookieSupport=1を付けて
14
14
 
15
15
  GETしているようなのは、sessionStateのcookielessがAutoDetectの場合に発生する様です。
16
+
17
+
18
+
19
+ 今回の場合、最初のPOSTは、以下に述べるセッションのための処理を行うために、
20
+
21
+ ASP.NETによって処理され、二番目に来るGETを関数TestPostに振り分けようとして、
22
+
23
+ POSTにしか対応していないのでエラー、ということだと思います。
24
+
25
+
26
+
27
+ 同じサイト内のページに埋め込んだJavascriptやChromeのRest Clientでうまくいったのは、
28
+
29
+ 既に今回のアプリケーションにアクセスしており、リクエストにクッキーが載っていたためではないかと
30
+
31
+ 予想しています。
32
+
33
+ (確認できれば、確認していただければと思います。)
16
34
 
17
35
 
18
36
 

2

リンクと、文章の流れを一部修正した。

2015/10/13 08:43

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -12,21 +12,23 @@
12
12
 
13
13
  まず、POSTした後に、クエリストリングにAspxAutoDetectCookieSupport=1を付けて
14
14
 
15
- GETしているようなのは、sessionStatecookieless="AutoDetect"を指定していると発生する様です。
15
+ GETしているようなのは、sessionStatecookielessAutoDetectの場合に発生する様です。
16
16
 
17
17
 
18
18
 
19
- クッキーが使えるクライアントならクッキーにセッションIDを保存
19
+ セッションIDをクッキーに保存するかURLに埋め込むかを決めるために
20
20
 
21
- そうでなければURLにセッションID埋め込む処理を行うために、
21
+ クッキーが使えるクライアントか、そうでないか判定するために、
22
22
 
23
23
  AspxAutoDetectCookieSupport=1にリダイレクトしています。
24
+
25
+ 以下のページに詳しい判定方法が載っています。
24
26
 
25
27
  [Understand How the ASP.NET Cookieless Feature Works](https://msdn.microsoft.com/en-us/library/aa479315.aspx)
26
28
 
27
29
 
28
30
 
29
- [SessionStateSection.Cookieless プロパティ](https://msdn.microsoft.com/ja-jp/library/system.web.configuration.sessionstatesection.cookieless(v=vs.110).aspx)を見ると、
31
+ また、[SessionStateSection.Cookieless プロパティ](https://msdn.microsoft.com/ja-jp/library/system.web.configuration.sessionstatesection.cookieless.aspx)を見ると、
30
32
 
31
33
  cookielessのデフォルトはAutoDetectの様なので、こちらをUseCookiesにすれば、
32
34
 

1

詳細を追記した。

2015/10/13 08:33

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -5,3 +5,53 @@
5
5
  では、セッションをoffにする事で現象が解消したとありますが、
6
6
 
7
7
  セッションは使用されているでしょうか?offにすることはできますか?
8
+
9
+
10
+
11
+ ### 問題が発生する仕組みについて
12
+
13
+ まず、POSTした後に、クエリストリングにAspxAutoDetectCookieSupport=1を付けて
14
+
15
+ GETしているようなのは、sessionStateにcookieless="AutoDetect"を指定していると発生する様です。
16
+
17
+
18
+
19
+ クッキーが使えるクライアントならクッキーにセッションIDを保存し、
20
+
21
+ そうでなければURLにセッションIDを埋め込む処理を行うために、
22
+
23
+ AspxAutoDetectCookieSupport=1にリダイレクトしています。
24
+
25
+ [Understand How the ASP.NET Cookieless Feature Works](https://msdn.microsoft.com/en-us/library/aa479315.aspx)
26
+
27
+
28
+
29
+ [SessionStateSection.Cookieless プロパティ](https://msdn.microsoft.com/ja-jp/library/system.web.configuration.sessionstatesection.cookieless(v=vs.110).aspx)を見ると、
30
+
31
+ cookielessのデフォルトはAutoDetectの様なので、こちらをUseCookiesにすれば、
32
+
33
+ 現象が解消する可能性はあります。
34
+
35
+ その場合、HttpClientでCookieが有効になる様にする必要があります。
36
+
37
+ ただ、UseCookiesにすればリダイレクトがなくなるかどうかについては、
38
+
39
+ 今のところ有効な資料を見つけられておらず、また検証する環境もないので、
40
+
41
+ うまく行くかは未知数です。
42
+
43
+
44
+
45
+ UseUriは、セッションID付きのURLへのリダイレクトを伴うと思いますので、
46
+
47
+ いずれにしてもリダイレクトした場合にGETリクエストになって同じエラーになるかと思います。
48
+
49
+ (こちらも検証していないので予想です。)
50
+
51
+
52
+
53
+ セッション自体をなくしてしまえば、これらの仕組みが動かなくなるので、
54
+
55
+ セッションをoffにすれば改善するだろうと思って回答しました。
56
+
57
+