web-dev-qa-db-ja.com

単一のリクエストに対してHttpWebRequestの「Expect:100 continue」ヘッダーを無効にする方法

HttpWebRequestは、POSTリクエストにExpect: 100-continueヘッダーを自動的に追加します。インターネットのさまざまなソースは、これを次のように無効にできることを示唆しています。

System.Net.ServicePointManager.Expect100Continue = false;

ただし、ライブラリを書いているので、アプリケーションがこの動作に依存している場合、appdomain全体でこれを無効にすることはできません。また、この値に設定されたままになると想定することもできません。特定のリクエストに対して無効にするにはどうすればよいですか?

41
Roman Starkov

HttpWebRequestクラスにはServicePointというプロパティがあり、特定のリクエストに対してこの設定を変更するために使用できます。例えば:

var req = (HttpWebRequest) WebRequest.Create(...);
req.ServicePoint.Expect100Continue = false;
71
Roman Starkov

プロキシも設定する必要がある場合は、必ず最初に設定してください。それ以外の場合、Expect100Continueは再びtrueに戻ります。そう:

HttpWebRequest webRequest = WebRequest.CreateHttp(_url);
webRequest.Proxy = new WebProxy(_proxyHost, _proxyPort);
webRequest.ServicePoint.Expect100Continue = false;
19
AroglDarthu