HttpWebRequestのアホ
今日ハマったのはSystem.Net.HttpWebRequest。非同期に受信すべくBeginGetResponseを呼ぶものの、常に呼び出したスレッドでコールバックが呼ばれる。何かプロパティの設定があるのかと思っても見つからず。今回はhttpsでの接続でHTTPのPOSTメソッドだったのだが、これが関係あるのかは不明。
だが、存在しないサイトにアクセスしにいってもDNS解決待ちでBeginGetResponseが悠々とブロックしにょるので呆れるばかり。なんてイモな実装なんだマイクロソフトよ。
Webで探すと、それっぽい記事は見つかった。でも回答をみても.NET Frameworkの問題だとしか書いてない。
まあ結論としては、別スレッドをこしらえて自前で同期するか、ThreadPool.QueueUserWorkItemあたりを使うかだな。BeginGetResponseは使用禁止!
それにしてもこんな基本的(なはず)の問題がWebにも情報が少ないってのは、やっぱり.NETはみんないまいち使っていないのか?
なおこの前書いた新連載はこちらにて公開となりました。全部読むにはユーザ登録が必要なのでちょっと面倒だけども、こんな感じで毎月ちょこちょこ書いていきます。これくらいなら仕事の合間の息抜きの範囲でできるしね。
最近のコメント