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

質問編集履歴

9

言葉の間違い再修正

2015/10/14 10:30

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -148,7 +148,7 @@
148
148
  ![イメージ説明](610cb19cc05811113ec4cda8074525ce.jpeg)
149
149
  AspxAutoDetectCookieSupportの値が1として保存されているようです。
150
150
 
151
- 試しに、これを削除して、JavascriptやREST ClientツールでPOSTしてみると、見事にエラーになります。
151
+ 試しに、これを削除して、JavascriptやREST ClientツールでGETしてみると、見事にエラーになります。
152
152
  ただ、このときに再度AspxAutoDetectCookieSupport=1 が保存され、2回目以降はエラーにならないようです。
153
153
 
154
154
  ■REST Client でのPOST実行結果

8

言葉の間違いを修正

2015/10/14 10:30

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -125,7 +125,7 @@
125
125
  eripong さん
126
126
 
127
127
  貴重な情報ありがとうございます。
128
- セッションIDの受渡のために、クッキーを使うかどうかの設定の話だと思うんですが、私の知識では、いまいち細かいしくみがわかrかりません。ただ、これを機に多少とも勉強させていただきます。
128
+ セッションIDの受渡のために、クッキーを使うかどうかの設定の話だと思うんですが、私の知識では、いまいち細かいしくみがわかりません。ただ、これを機に多少とも勉強させていただきます。
129
129
 
130
130
  最低限の私の知識で理解できる範囲で、以下いろいろやってみました。
131
131
 
@@ -148,7 +148,7 @@
148
148
  ![イメージ説明](610cb19cc05811113ec4cda8074525ce.jpeg)
149
149
  AspxAutoDetectCookieSupportの値が1として保存されているようです。
150
150
 
151
- 試しに、これを削除して、JavascriptやREST ClientツールでGETしてみると、見事にエラーになります。
151
+ 試しに、これを削除して、JavascriptやREST ClientツールでPOSTしてみると、見事にエラーになります。
152
152
  ただ、このときに再度AspxAutoDetectCookieSupport=1 が保存され、2回目以降はエラーにならないようです。
153
153
 
154
154
  ■REST Client でのPOST実行結果

7

補足内容をさらに追加

2015/10/14 10:25

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -118,4 +118,45 @@
118
118
  Content-Type: application/x-www-form-urlencoded
119
119
  Content-Length: 10
120
120
  }}
121
- ---------------------------------------------------------------------
121
+ ---------------------------------------------------------------------
122
+ ---
123
+ ###[その後の調査]
124
+
125
+ eripong さん
126
+
127
+ 貴重な情報ありがとうございます。
128
+ セッションIDの受渡のために、クッキーを使うかどうかの設定の話だと思うんですが、私の知識では、いまいち細かいしくみがわかrかりません。ただ、これを機に多少とも勉強させていただきます。
129
+
130
+ 最低限の私の知識で理解できる範囲で、以下いろいろやってみました。
131
+
132
+ ■まず、cookieless の設定による実行結果です。(○がPOST成功)
133
+ × UseUri
134
+ ○ UseCookies
135
+ × AutoDetect
136
+ ○ UseDeviceProfile
137
+
138
+ おっしゃるように、UseCookiesだとうまくいくようで、UseDeviceProfileでも大丈夫みたいです。
139
+
140
+ つまり、設定としては、
141
+ - <sessionState mode="Off" />
142
+ - <sessionState cookieless="UseCookies"/>
143
+ - <sessionState cookieless="UseDeviceProfile"/>
144
+ のいずれかだとうまくいくということになります。
145
+
146
+
147
+ ■次に、Chromeのクッキーの状態を見てみました。
148
+ ![イメージ説明](610cb19cc05811113ec4cda8074525ce.jpeg)
149
+ AspxAutoDetectCookieSupportの値が1として保存されているようです。
150
+
151
+ 試しに、これを削除して、JavascriptやREST ClientツールでGETしてみると、見事にエラーになります。
152
+ ただ、このときに再度AspxAutoDetectCookieSupport=1 が保存され、2回目以降はエラーにならないようです。
153
+
154
+ ■REST Client でのPOST実行結果
155
+ 各処理のリクエストの内容を細かく調べる方法がわからないので、とりあえず情報として載せておきます。
156
+
157
+ 以下は、REST Client でPOSTに失敗した時の状況です。
158
+ ![イメージ説明](ec24d599550c1b4df164ada41a965364.jpeg)
159
+ POST時に、AspxAutoDetectCookieSupport=1にリダイレクトしてるということでしょうか。その結果「405 Method Not Allowed」が返されています。そして、その後、GETしようとしてエラー返されているようです。
160
+
161
+ 最後に、REST Client でPOSTに成功した時の状況です。
162
+ ![イメージ説明](7f355c63f813050726d651effbc5a9d3.jpeg)

6

補足の追加

2015/10/14 08:59

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -109,7 +109,7 @@
109
109
  ということでした。
110
110
  1行目の処理で、エラーが帰りそのため2行目のGETがうまくいかないということのようです。
111
111
 
112
- 戻り値の内容を一部抜粋
112
+ 1行目POST時の戻り値の内容を一部抜粋
113
113
  ---------------------------------------------------------------------
114
114
  IsSuccessStatusCode: false
115
115
  ReasonPhrase: "Method Not Allowed"

5

補足を一部修正

2015/10/13 04:10

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -103,4 +103,19 @@
103
103
  2015-10-13 03:09:21 ::1 POST /api/GateApi/TestPost/ - 12345 - ::1 - - 302 0 0 13
104
104
  2015-10-13 03:09:21 ::1 GET /api/GateApi/TestPost/ AspxAutoDetectCookieSupport=1 53903 - ::1 - - 405 0 0 266
105
105
  ---------------------------------------------------------------------
106
- なぜ POSしてGETしてるよな動きになってるみです
106
+ 上記ログ(うまくい)とソースの対応を調べですが、
107
+ 1行目: var response = await httpClient.PostAsync(url, content); → POST
108
+ 2行目: String text = await response.Content.ReadAsStringAsync(); → GET
109
+ ということでした。
110
+ 1行目の処理で、エラーが帰りそのため2行目のGETがうまくいかないということのようです。
111
+
112
+ 戻り値の内容を一部抜粋
113
+ ---------------------------------------------------------------------
114
+ IsSuccessStatusCode: false
115
+ ReasonPhrase: "Method Not Allowed"
116
+ RequestMessage: {Method: POST, RequestUri: 'http://localhost:12345/api/GateApi/TestPost/?AspxAutoDetectCookieSupport=1', Version: 1.1, Content: System.Net.Http.FormUrlEncodedContent, Headers:
117
+ {
118
+ Content-Type: application/x-www-form-urlencoded
119
+ Content-Length: 10
120
+ }}
121
+ ---------------------------------------------------------------------

4

修正依頼があったため

2015/10/13 04:05

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -92,4 +92,15 @@
92
92
 
93
93
  何か、ヘッダなど必要な情報があるんでしょうが、よくわかりません。
94
94
  ###補足情報
95
- サーバー側もクライアント側も、.NETのバージョンは 4.5.1
95
+ サーバー側もクライアント側も、.NETのバージョンは 4.5.1
96
+
97
+ IISのログの抜粋です
98
+ ---------------------------------------------------------------------
99
+ ■うまくいくとき → ChromeのRest Client で呼び出し
100
+ 2015-10-13 03:06:50 ::1 POST /api/GateApi/TestPost - 12345 - ::1 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/45.0.2454.101+Safari/537.36 - 200 0 0 2620
101
+
102
+ ■うまくいかないとき → WindowsForm で呼び出し
103
+ 2015-10-13 03:09:21 ::1 POST /api/GateApi/TestPost/ - 12345 - ::1 - - 302 0 0 13
104
+ 2015-10-13 03:09:21 ::1 GET /api/GateApi/TestPost/ AspxAutoDetectCookieSupport=1 53903 - ::1 - - 405 0 0 266
105
+ ---------------------------------------------------------------------
106
+ なぜか POSしてGETしているような動きになってるみたいです。

3

間違ったソースコードをコピーしてしまいました

2015/10/13 03:33

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -48,6 +48,11 @@
48
48
  ```C#
49
49
  private void button_Click(object sender, EventArgs e)
50
50
  {
51
+ PostWebPageAsync();
52
+ }
53
+
54
+ private async void PostWebPageAsync()
55
+ {
51
56
  this.label1.Text = "Post取得中";
52
57
 
53
58
  string uri = "http://localhost:12345/api/GateApi/TestPost/";

2

説明不足と思われる個所に文章を追加

2015/10/13 00:20

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -25,7 +25,7 @@
25
25
  }
26
26
 
27
27
  ```
28
- 試しに、以下のJavascriptでPOSTしてみましたが、これは正常に処理されます。
28
+ 試しに、同じサイト内のページに埋め込んだ、以下のJavascriptでPOSTしてみましたが、これは正常に処理されます。
29
29
  値も正常に渡るし、戻り値も返っています。
30
30
  ```JavaScript
31
31
  function testPost() {

1

補足情報を訂正

2015/10/10 23:33

投稿

skippanther
skippanther

スコア13

title CHANGED
File without changes
body CHANGED
@@ -87,4 +87,4 @@
87
87
 
88
88
  何か、ヘッダなど必要な情報があるんでしょうが、よくわかりません。
89
89
  ###補足情報
90
- .NETのバージョンは 4.5.1
90
+ サーバー側もクライアント側も、.NETのバージョンは 4.5.1