如何在HttpWebRequest中为单个请求禁用“Expect:100 continue”标头?

时间:2012-12-28 01:06:40

标签: c# .net httpwebrequest

HttpWebRequest会自动为POST请求添加Expect: 100-continue标头。互联网上的各种消息来源表明,这可以被禁用如下:

System.Net.ServicePointManager.Expect100Continue = false;

但是,我正在编写一个库,我不能为整个appdomain禁用它,以防应用程序依赖于此行为。我也不能假设它将保持设定为此值。如何针对特定请求禁用它?

2 个答案:

答案 0 :(得分:70)

HttpWebRequest类有一个名为ServicePoint的属性,可用于更改特定请求的此设置。例如:

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

答案 1 :(得分:19)

如果您还需要设置代理,请务必先执行此操作。否则 Expect100Continue 将再次恢复为 true 。所以:

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