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

Rom*_*kov 44 .net c# httpwebrequest

HttpWebRequest自动附加Expect: 100-continuePOST请求的标头.互联网上的各种消息来源表明,这可以被禁用如下:

System.Net.ServicePointManager.Expect100Continue = false;
Run Code Online (Sandbox Code Playgroud)

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

Rom*_*kov 73

HttpWebRequest类有一个称为属性ServicePoint,其可以用来改变此设置的特定请求.例如:

var req = (HttpWebRequest) WebRequest.Create(...);
req.ServicePoint.Expect100Continue = false;
Run Code Online (Sandbox Code Playgroud)


Aro*_*thu 20

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

HttpWebRequest webRequest = WebRequest.CreateHttp(_url);
webRequest.Proxy = new WebProxy(_proxyHost, _proxyPort);
webRequest.ServicePoint.Expect100Continue = false;
Run Code Online (Sandbox Code Playgroud)