回答編集履歴
3
具体的に今回の問題について追記した。
answer
CHANGED
@@ -7,6 +7,15 @@
|
|
7
7
|
まず、POSTした後に、クエリストリングにAspxAutoDetectCookieSupport=1を付けて
|
8
8
|
GETしているようなのは、sessionStateのcookielessがAutoDetectの場合に発生する様です。
|
9
9
|
|
10
|
+
今回の場合、最初のPOSTは、以下に述べるセッションのための処理を行うために、
|
11
|
+
ASP.NETによって処理され、二番目に来るGETを関数TestPostに振り分けようとして、
|
12
|
+
POSTにしか対応していないのでエラー、ということだと思います。
|
13
|
+
|
14
|
+
同じサイト内のページに埋め込んだJavascriptやChromeのRest Clientでうまくいったのは、
|
15
|
+
既に今回のアプリケーションにアクセスしており、リクエストにクッキーが載っていたためではないかと
|
16
|
+
予想しています。
|
17
|
+
(確認できれば、確認していただければと思います。)
|
18
|
+
|
10
19
|
セッションIDをクッキーに保存するかURLに埋め込むかを決めるために、
|
11
20
|
クッキーが使えるクライアントか、そうでないかを判定するために、
|
12
21
|
AspxAutoDetectCookieSupport=1にリダイレクトしています。
|
2
リンクと、文章の流れを一部修正した。
answer
CHANGED
@@ -5,14 +5,15 @@
|
|
5
5
|
|
6
6
|
### 問題が発生する仕組みについて
|
7
7
|
まず、POSTした後に、クエリストリングにAspxAutoDetectCookieSupport=1を付けて
|
8
|
-
GETしているようなのは、sessionState
|
8
|
+
GETしているようなのは、sessionStateのcookielessがAutoDetectの場合に発生する様です。
|
9
9
|
|
10
|
+
セッションIDをクッキーに保存するかURLに埋め込むかを決めるために、
|
10
|
-
クッキーが使えるクライアントな
|
11
|
+
クッキーが使えるクライアントか、そうでないかを判定するために、
|
11
|
-
そうでなければURLにセッションIDを埋め込む処理を行うために、
|
12
12
|
AspxAutoDetectCookieSupport=1にリダイレクトしています。
|
13
|
+
以下のページに詳しい判定方法が載っています。
|
13
14
|
[Understand How the ASP.NET Cookieless Feature Works](https://msdn.microsoft.com/en-us/library/aa479315.aspx)
|
14
15
|
|
15
|
-
[SessionStateSection.Cookieless プロパティ](https://msdn.microsoft.com/ja-jp/library/system.web.configuration.sessionstatesection.cookieless
|
16
|
+
また、[SessionStateSection.Cookieless プロパティ](https://msdn.microsoft.com/ja-jp/library/system.web.configuration.sessionstatesection.cookieless.aspx)を見ると、
|
16
17
|
cookielessのデフォルトはAutoDetectの様なので、こちらをUseCookiesにすれば、
|
17
18
|
現象が解消する可能性はあります。
|
18
19
|
その場合、HttpClientでCookieが有効になる様にする必要があります。
|
1
詳細を追記した。
answer
CHANGED
@@ -1,4 +1,28 @@
|
|
1
1
|
調べ切れていませんが、セッションの実現のための仕組みのようです。
|
2
2
|
[rest - asp.net web api and aspxautodetectcookiesupport - Stack Overflow](http://stackoverflow.com/questions/29048822/asp-net-web-api-and-aspxautodetectcookiesupport)
|
3
3
|
では、セッションをoffにする事で現象が解消したとありますが、
|
4
|
-
セッションは使用されているでしょうか?offにすることはできますか?
|
4
|
+
セッションは使用されているでしょうか?offにすることはできますか?
|
5
|
+
|
6
|
+
### 問題が発生する仕組みについて
|
7
|
+
まず、POSTした後に、クエリストリングにAspxAutoDetectCookieSupport=1を付けて
|
8
|
+
GETしているようなのは、sessionStateにcookieless="AutoDetect"を指定していると発生する様です。
|
9
|
+
|
10
|
+
クッキーが使えるクライアントならクッキーにセッションIDを保存し、
|
11
|
+
そうでなければURLにセッションIDを埋め込む処理を行うために、
|
12
|
+
AspxAutoDetectCookieSupport=1にリダイレクトしています。
|
13
|
+
[Understand How the ASP.NET Cookieless Feature Works](https://msdn.microsoft.com/en-us/library/aa479315.aspx)
|
14
|
+
|
15
|
+
[SessionStateSection.Cookieless プロパティ](https://msdn.microsoft.com/ja-jp/library/system.web.configuration.sessionstatesection.cookieless(v=vs.110).aspx)を見ると、
|
16
|
+
cookielessのデフォルトはAutoDetectの様なので、こちらをUseCookiesにすれば、
|
17
|
+
現象が解消する可能性はあります。
|
18
|
+
その場合、HttpClientでCookieが有効になる様にする必要があります。
|
19
|
+
ただ、UseCookiesにすればリダイレクトがなくなるかどうかについては、
|
20
|
+
今のところ有効な資料を見つけられておらず、また検証する環境もないので、
|
21
|
+
うまく行くかは未知数です。
|
22
|
+
|
23
|
+
UseUriは、セッションID付きのURLへのリダイレクトを伴うと思いますので、
|
24
|
+
いずれにしてもリダイレクトした場合にGETリクエストになって同じエラーになるかと思います。
|
25
|
+
(こちらも検証していないので予想です。)
|
26
|
+
|
27
|
+
セッション自体をなくしてしまえば、これらの仕組みが動かなくなるので、
|
28
|
+
セッションをoffにすれば改善するだろうと思って回答しました。
|