.net 使用Expect:100时处理失败继续使用HttpClient

.net 使用Expect:100时处理失败继续使用HttpClient,.net,dotnet-httpclient,http-status-code-100,http-status-code-412,.net,Dotnet Httpclient,Http Status Code 100,Http Status Code 412,我感兴趣的是优化调用RESTAPI的客户端的行为。在这个API中,一个特定的POST操作允许包含一个如果不匹配:头,如果系统中已经存在要上传的项目,这将导致服务器报告HTTP 412响应。与Expect:100 continue一起使用时,服务器将使用412响应,而不是发送100响应,如中所述。我希望在客户端检测这种情况,并避免在这种情况下传输请求主体 当直接使用HttpWebRequest时,实现起来相当简单。在调用GetRequestStream(或GetRequestStreamAsync

我感兴趣的是优化调用RESTAPI的客户端的行为。在这个API中,一个特定的POST操作允许包含一个
如果不匹配:
头,如果系统中已经存在要上传的项目,这将导致服务器报告HTTP 412响应。与
Expect:100 continue
一起使用时,服务器将使用412响应,而不是发送100响应,如中所述。我希望在客户端检测这种情况,并避免在这种情况下传输请求主体

当直接使用
HttpWebRequest
时,实现起来相当简单。在调用
GetRequestStream
(或
GetRequestStreamAsync
)之后,但在将数据写入结果
流之前,代码只需检查属性。如果该值为
true
,请关闭请求流并继续调用
GetResponseAsync


现在我正致力于过渡到使用
HttpClient
,而不是直接使用
HttpWebRequest
(以改进跨多个平台的支持)。目前,我使用一个
StreamContent
来表示请求的主体,并观察到流的内容被发送,而不管服务器发送的是100还是412响应。如何使用
HttpClient
HttpRequestMessage
而不是
HttpWebRequest
,执行与上述类似的优化?

您可以使用HttpContent的PushStreamContent样式来控制请求流的发送,我不知道有什么方法可以得到HaveResponse属性。