【问题标题】:.NET Core 2.0 soap client call fails with "WinHttpException: The operation timed out".NET Core 2.0 soap 客户端调用失败并出现“WinHttpException:操作超时”
【发布时间】: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:操作超时”异常。其他相关观察:

  1. 完全相同的代码(包括生成的连接服务)在带有 .NET Framework 的 VS 2015 中运行良好。
  2. 我们的开发机器位于公司防火墙后面,因此两次执行之间的 wirshark 跟踪看起来不同。在.NET Framework上运行成功的可以建立连接,而另一个无法连接到代理。
  3. 我看过其他文章谈论增加长时间运行或繁重调用的超时值,但这篇文章既不繁重也不是长时间运行的方法。

有没有人遇到过类似的问题或知道为什么 .NET 核心的行为不同?

更新 1 我们在基于云的计算机上测试了该解决方案,它运行良好。因此,它看起来是公司防火墙阻止了传出通信。 另一方面,在同一台本地计算机上,我们测试了一个简单的 .Net Core 应用程序,该应用程序从网站下载图像并且运行良好。 这一切都在 VS 2015 与 .NET Framework 运行相同的代码、调用 Web 服务并获取结果时没有问题。 那么,新的问题可能是为什么 .NET Core 在网络通信中表现不同?是否有任何新的规则、政策、许可、限制、能力等需要打开/关闭以启用与互联网的通信?

【问题讨论】:

    标签: c# web-services wcf .net-core client


    【解决方案1】:

    .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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      • 2017-03-09
      • 1970-01-01
      • 2017-02-11
      • 2018-01-30
      • 2011-02-13
      • 2011-02-08
      相关资源
      最近更新 更多