【发布时间】:2018-04-23 13:19:56
【问题描述】:
我有一个在 .Net core 2.0 中开发的简单肥皂客户端,用于使用以下 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:操作超时”异常。其他相关观察:
- 完全相同的代码(包括生成的连接服务)在带有 .NET Framework 的 VS 2015 中运行良好。
- 我们的开发机器位于公司防火墙后面,因此两次执行之间的 wirshark 跟踪看起来不同。在.NET Framework上运行成功的可以建立连接,而另一个无法连接到代理。
- 我看过其他文章谈论增加长时间运行或繁重调用的超时值,但这篇文章既不繁重也不是长时间运行的方法。
有没有人遇到过类似的问题或知道为什么 .NET 核心的行为不同?
更新 1 我们在基于云的计算机上测试了该解决方案,它运行良好。因此,它看起来是公司防火墙阻止了传出通信。 另一方面,在同一台本地计算机上,我们测试了一个简单的 .Net Core 应用程序,该应用程序从网站下载图像并且运行良好。 这一切都在 VS 2015 与 .NET Framework 运行相同的代码、调用 Web 服务并获取结果时没有问题。 那么,新的问题可能是为什么 .NET Core 在网络通信中表现不同?是否有任何新的规则、政策、许可、限制、能力等需要打开/关闭以启用与互联网的通信?
【问题讨论】:
标签: c# web-services wcf .net-core client