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

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

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

Re[2]: ASP.NET WebアプリへのPOST


(過去ログ 135 を表示中)

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

■79470 / inTopicNo.1)  ASP.NET WebアプリへのPOST
  
□投稿者/ SO (1回)-(2016/04/05(Tue) 13:21:38)

分類:[C#] 

VS Community 2015 - C#(.NET Ver 4.5.2)

ASP.NETのWebアプリにHTTP Clientを使用して、ファイルPOSTを行いたいです。
現状、送信(POST)をしているのですが、すぐに応答が返ってきており、
ASP.NET側の処理が動いているようには見えません。

実装手順
1.GetAsyncにてASP.NETのページソースを取得。
2.HTMLを解析して、「__VIEWSTATE,__VIEWSTATEGENERATOR,__EVENTVALIDATION」の値を取得。
3.2の情報をStringContentにて生成。
4.StreamContentにてファイルを読み込んで生成。
5.MultipartFormDataContentに上記Content郡をAddして、PostAsync

ASP.NET Webアプリの動作
ファイル(CSVファイル)をinput:fileにて選択後、ファイル作成ボタンをクリック。
数秒後(送信するファイルサイズに依存)、ファイル作成成功のメッセージとともに、
処理行数、最終処理日時が表示されます。
この、処理行数と最終処理日時は、ASP.NET側で保持されているらしく、
HTTP ClientからPOST送信しても変化が見られないことから、
ASP.NET側の処理が動いているようには見えないと判断しました。

# ブラウザを使用して、ASP.NETを使用した時に、Cookieが無かったので、セッションクッキーは使用されていないと思います。(URLも同様)

引用返信 編集キー/
■79471 / inTopicNo.2)  Re[1]: ASP.NET WebアプリへのPOST
□投稿者/ WebSurfer (883回)-(2016/04/05(Tue) 14:28:44)
No79470 (SO さん) に返信

__VIEWSTATE,__VIEWSTATEGENERATOR,__EVENTVALIDATION の値を取得して POST し
ているということから、サーバーエラーを回避して期待した応答を得るための知識
はお持ちのように見えますが、そうなんでしょうか?


そうであれば以下は余計なお世話かもしれませんが・・・

> 現状、送信(POST)をしているのですが、すぐに応答が返ってきており、
> ASP.NET側の処理が動いているようには見えません。

.aspx ページを要求して HTTP 200 応答が返ってきているのであれば、サーバー側
で ASP.NET の処理は動いているのは間違いないと思います。

POST したデータによって ASP.NET の処理が異なってデータがうまく送信できてな
いということがあるとすると、質問者さんが期待した処理は行われず、応答内容も
期待したものにならないということはあると思いますが。

でも、そのあたりは、掲示板の反対側にいて掲示板に書いてある情報以外は知る術の
ない第三者には分かりません。

ブラウザでアクセスして期待した結果が得られるということなら、Fiddler などを
用いて、ブラウザでアクセスした場合と HttpClient でアクセスした場合の要求/応答
をキャプチャして比較してみてはいかがですか? それで何か分かるかもしれません。

ところで、もし第三者のサイトに HttpClient を使って自動アクセスしている(ブラ
ウザを使って手動でアクセスするのではなく)とすると、そのサイトの管理者に許可
を得ているでしょうか?
引用返信 編集キー/
■79472 / inTopicNo.3)  Re[2]: ASP.NET WebアプリへのPOST
□投稿者/ SO (2回)-(2016/04/05(Tue) 16:36:48)
No79471 (WebSurfer さん) に返信

お返事ありがとうございます。

早速ですが、自己解決しました。
ContentDispositionHeaderValueのファイル名を設定する箇所がまずかったらしく、
適当なファイル名を設定すると、ASP.NET側がきちんと動いてくれました。

StreamContent fContent = new StreamContent(File.OpenRead(strUploadFileName));
fContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
  Name= "\"fFile\"",
  FileName = "\"test\""
};

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -