HTTP 417解决方案

  在一次模拟HTPP请求时,本人在项目中的一般处理程序中调用客户接口返回非成功的结果。为了方便调试,所以将核心代码拷贝至控制台中进逐个调试。

在控制台中,启动调试时提示:

  未经处理的异常:  System.Net.WebException: 远程服务器返回错误: (417) Expectation
failed。

  由于代码与在一般处理程序中的一致,并无区别。后来由于之前在一次处理中文乱码的经验中,在其他环境下面调试发现并无乱码,经人提醒将Web.config拷贝至新的测试环境下则发现了乱码并进行调试解决。有了该经历,我在怀疑是否因为配置文件的原因导致的。并将Web.config中的所有配置拷贝至app.config中。启动后毅然发现错误消除了,后经逐步删除各个节点启动发现在<system.net>节点中某个节点配置导致。

  配置节点如下:

1 <system.net>
2     <settings>
3       <servicePointManager expect100Continue="false"/>
4     </settings>
5   </system.net>
View Code

  后经继续搜索找到在发起HTTP请求时在代码前设置如下也可解决HTTP 417

// 摘要:
//获取或设置一个 System.Boolean 值,该值确定是否使用 100-Continue 行为。
//
// 返回结果:
//若要启用 100-Continue 行为,则为 true。默认值为 true。
System.Net.ServicePointManager.Expect100Continue = false;

 解决原理应该是设置100-Continue 行为 false,一个是通过配置文件设置,一个是通过代码实时设置,异曲同工。

原文地址:https://www.cnblogs.com/YangChengHu/p/3529964.html