.NET Core 2.0 soap 客户端调用失败 "WinHttpException: The operation timed out"
.NET Core 2.0 soap client call fails with "WinHttpException: The operation timed out"
我有一个在 .Net core 2.0 中开发的简单 soap 客户端,用于使用来自以下 Web 服务的计算器方法:
http://www.dneonline.com/calculator.asmx?WSDL
该服务作为连接服务导入 Visual Studio 2017,调用服务方法的代码如下所示:
var binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
var ep = new EndpointAddress("http://www.dneonline.com/calculator.asmx?WSDL");
Calculator.CalculatorSoapClient client =
new Calculator.CalculatorSoapClient(binding, ep);
client.AddAsync(1, 3).Wait();
Console.WriteLine("Finished successfully");
Console.ReadLine();
现在的问题是调用 AddAsync 方法时此代码在 20 秒后失败,异常为 "WinHttpException: The operation timed out"。其他相关观察:
- 完全相同的代码(包括生成的连接服务)在带有 .NET Framework 的 VS 2015 中运行良好。
- 我们的开发机器在公司防火墙后面,因此 wirshark 跟踪在两次执行之间看起来不同。 .NET Framework 上成功的 运行 可以建立连接,而另一个无法连接到代理。
- 我看过其他文章谈论增加长 运行ning 或重调用的超时值,但这篇文章既不重也不长 运行ning 方法。
有没有人遇到任何类似的问题或知道为什么 .NET core 的行为不同?
更新 1
我们在基于云的计算机上测试了该解决方案,它运行良好。因此,看起来是公司防火墙阻止了传出通信。
另一方面,在同一台本地计算机上,我们测试了一个简单的 .Net Core 应用程序,该应用程序从网站下载图像并且运行良好。
这就是全部,而带有 .NET Framework 的 VS 2015 没有问题 运行 使用相同的代码,调用 Web 服务并获取结果。
那么,新的问题可能是为什么 .NET Core 在网络通信上的行为不同?是否有任何新的规则、政策、许可、限制、能力等需要转变 on/off 以启用与互联网的通信?
.net Core 2.0 中存在代理配置错误,您可以在此处看到:https://github.com/dotnet/wcf/issues/1592。
我的项目 (VS 2017/.net Core 2.0) 的解决方案是将其升级到 .net Core 2.1,并将 System.ServiceModel.Http 和其他依赖项更新到最新的稳定版(在我的例子中是 4.5.3) .然后使用 IE/Edge 代理设置。
这个问题可能与以下问题重复:Connecting to a SOAP service with .Net Core 2.0 behind a proxy
我有一个在 .Net core 2.0 中开发的简单 soap 客户端,用于使用来自以下 Web 服务的计算器方法: http://www.dneonline.com/calculator.asmx?WSDL 该服务作为连接服务导入 Visual Studio 2017,调用服务方法的代码如下所示:
var binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
var ep = new EndpointAddress("http://www.dneonline.com/calculator.asmx?WSDL");
Calculator.CalculatorSoapClient client =
new Calculator.CalculatorSoapClient(binding, ep);
client.AddAsync(1, 3).Wait();
Console.WriteLine("Finished successfully");
Console.ReadLine();
现在的问题是调用 AddAsync 方法时此代码在 20 秒后失败,异常为 "WinHttpException: The operation timed out"。其他相关观察:
- 完全相同的代码(包括生成的连接服务)在带有 .NET Framework 的 VS 2015 中运行良好。
- 我们的开发机器在公司防火墙后面,因此 wirshark 跟踪在两次执行之间看起来不同。 .NET Framework 上成功的 运行 可以建立连接,而另一个无法连接到代理。
- 我看过其他文章谈论增加长 运行ning 或重调用的超时值,但这篇文章既不重也不长 运行ning 方法。
有没有人遇到任何类似的问题或知道为什么 .NET core 的行为不同?
更新 1 我们在基于云的计算机上测试了该解决方案,它运行良好。因此,看起来是公司防火墙阻止了传出通信。 另一方面,在同一台本地计算机上,我们测试了一个简单的 .Net Core 应用程序,该应用程序从网站下载图像并且运行良好。 这就是全部,而带有 .NET Framework 的 VS 2015 没有问题 运行 使用相同的代码,调用 Web 服务并获取结果。 那么,新的问题可能是为什么 .NET Core 在网络通信上的行为不同?是否有任何新的规则、政策、许可、限制、能力等需要转变 on/off 以启用与互联网的通信?
.net Core 2.0 中存在代理配置错误,您可以在此处看到:https://github.com/dotnet/wcf/issues/1592。
我的项目 (VS 2017/.net Core 2.0) 的解决方案是将其升级到 .net Core 2.1,并将 System.ServiceModel.Http 和其他依赖项更新到最新的稳定版(在我的例子中是 4.5.3) .然后使用 IE/Edge 代理设置。
这个问题可能与以下问题重复:Connecting to a SOAP service with .Net Core 2.0 behind a proxy