我的应用程序是使用 WCF 服务的 C# Windows 服务。当出现第一个“期望失败 (417)”错误时,我将ServicePointManager.Expect100Continue
和都更改ServicePoint.Expect100Continue
为false
:
try
{
//ServicePointManager.Expect100Continue = false; // If uncomment all work
var svc = new ServiceClient();
svc.GetData(); // first error
}
catch (ProtocolException pex)
{
if (pex.Message.Contains("(417)"))
{
ServicePointManager.Expect100Continue = false;
var sp = ServicePointManager.FindServicePoint(new Uri(@"http://addr.to.service/service.svc"));
sp.Expect100Continue = false;
var svc = new ServiceClient();
svc.GetData(); // second same error
}
}
但是,对该服务的第二次调用也失败了。但是,如果我在任何连接之前设置Expect100Continue
为false
,与服务的通信就可以正常工作。
这种方式正确处理Expect100Continue
错误吗?我需要应用程序自动适应而无需用户操作。我忘记做这项工作是什么?