VB.NETでPOSTを連続して行うと失敗する

VB.NETでPOSTやPUTを連続して行うと失敗することがあります。
VB.NETでPOSTにより、データを送受信するためには、
HttpWebRequestとHttpWebResponseを使います。
その方法のソースコードは、いろいろなところで紹介されています。
実際に、それらのソースコードを利用して、プログラムをすれば、うまくいきます。
しかし、環境によりうまくいかない場合があります。

具体的には、2度目の、WebRequest.GetRequestStreamのところで、固まってフリーズしたようになって、しばらくするとタイムアウトエラーが出てしまいます。
そのため、複数のファイルを順次アップロードする処理がうまくいきません。
私が実際になってしまったのは、WindowsXP Home SP2に.Net Framework2.0がインストールされているときで、.Net Framework2.0をアンインストールしたら治ってしまいました。
もう1つダメだったのは、Windows Vista Businessです。
しかし、WindowsXP Pro SP2で.Net Framework2.0がインストールされている環境で大丈夫だったこともあるので、何が問題なのかわかりません。

いろいろ検索していたら、うまくいく方法を見つけました。
それは、WebRequestをAbortすることです。
WebRequestをAbortしないと、何かを占有しているために、
新たに、GetRequestStreamが出来ずに固まるようです。

こんな感じです。

Dim sURI As String
Dim objReq As WebRequest
'データをバイト配列に変換したもの
Dim bytePost As Byte()
Dim objStream As Stream

'Requestオブジェクトを作成
objReq = WebRequest.Create(sURI)
objReq.Method = "POST"
objReq.ContentType = "application/x-www-form-urlencoded"
objReq.ContentLength = bytePost.Length
objStream = objReq.GetRequestStream
objStream.Write(bytePost, 0, bytePost.Length)
objStream.Close()
'ここでAbortする
objReq.Abort()
posted by VB.NET+MSDE+ActiveReports at 18:24 | Comment(0) | TrackBack(0) | ネットワーク
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL
http://blog.sakura.ne.jp/tb/11433581