我的头部有一些问题 Expect 100-Continue
在.NET 4.5应用程序里面的一个DELETE方法上。客户端在调用中还提供了一个小的内容体。
在调用中,客户端还提供了一个小的内容体。微软官方文档 似乎意味着这个头默认只在PUT和POST调用中传递非空的内容,但它没有提到DELETE。有谁知道这个配置是否也适用于DELETE?
我在我的web应用程序的不同环境中遇到了不同的行为,特别是我有一些环境,在这些环境中,头从未被传递(即使在PUT和POST中),没有任何关于它被停用的提示。
为了与这个选项交互,我只知道四种方法。
通过ServicePointManager
System.Net.ServicePointManager.Expect100Continue = false;
编辑客户端选项
var c = new HttpClient();
c.DefaultRequestHeaders.ExpectContinue = false;
手动添加或删除它在 HttpWebRequest
与 AddHeader/Remove
Web.Config
<system.net>
<settings>
<servicePointManager expect100Continue="false"/>
</settings>
</system.net>
不幸的是,这些似乎都不是我的情况。有没有其他方法来搞这个选项?
刚刚设法找到了这个问题的解决方法。我发现我的一些环境使用的是 Couchbase客户端 来处理分布式缓存,不同于IIS的couchbase内部设置了 Expect100Continue
到 true
但它是以如下方式实现的。
namespace Couchbase.Configuration.Client
{
public class ClientConfiguration {
//...
public ClientConfiguration()
{
//...
this.Expect100Continue = false;
}
//--
public bool Expect100Continue
{
get
{
return ServicePointManager.Expect100Continue;
}
set
{
ServicePointManager.Expect100Continue = value;
}
}
}
}
他们使用静态的 ServicePointManager
方法,这意味着每一个后续实例化的客户端都会改变其行为。
我的Couchbase客户端版本是 2.1.4.0