- PR -

HttpWebRequest.CookieContainer の動作について

1
投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-03-18 13:41
HttpWebRequestを使用してリクエストを送信する際に、CookieContainer プロパティにクッキーを(送信または)受信するためのコンテナを設定した場合についての疑問です。

クッキーコンテナを設定してからリクエストを送信すると、設定されたコンテナにサーバからのクッキーが設定されると思いますが、この動作がコンテナに対してスレッドセーフになっているか(おそらくなっていないような気がするが)どうかをご存知の方いらっしゃいませんでしょうか?

クッキーコンテナをそのリクエスト専用で使用する場合には問題ないのですが、例えばアプリケーションで共有のクッキーコンテナを用意しておき、全てのリクエストでそのコンテナを使用する(クッキーを共有する)という使い方をする際、各リクエストが複数スレッドで実行された場合の動作が気になります。

CookieContainer クラスのインスタンスメンバはスレッドセーフとは限らないということなので、単純な実装であれば、呼び出し側で何らかの同期が必要になると思われますが、実際のところがどうなのか知りたいです。

安全確実にするのであれば、まず共有のクッキーコンテナから、今回のリクエストで必要となるクッキーを抽出し、新しく作成したクッキーコンテナに格納してリクエスト。
戻されたクッキーコンテナから再度クッキーを取り出し、共有クッキーコンテナに追加(ただし、共有クッキーコンテナからのクッキー取得と追加時は、スレッド間でロックを掛ける)。
という感じになるかなと思いますが、元々考慮されているのならいかにも無駄な感じです…

というわけで、この辺の情報をお持ちの方いらっしゃいませんでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)