使用代理后面的.Net Core 2.0连接到SOAP服务

时间:2017-11-08 15:06:43

标签: web-services soap proxy .net-core

我正在使用Visual Studio 2017。

我注意到在代理服务器后面无法从.Net Core 2.0连接到SOAP服务(当直接连接到互联网时它正在工作以及从.Net Core 1.1应用程序通过代理连接时它也在工作。)

我创建了一个调用公共SOAP服务(http://www.webservicex.net/globalweather.asmx)的小测试程序(Console app)。 通过更改此程序的目标(.Net Core 1.1 / .Net Core 2.0),我可以重现该问题。

以下是示例代码(使用VS 2017的连接服务组件生成了连接到Web服务的类):

BasicHttpBinding binding = new BasicHttpBinding();

EndpointAddress address = new EndpointAddress("http://www.webservicex.net/globalweather.asmx");

GlobalWeatherSoapClient client = new GlobalWeatherSoapClient(binding, address);

var response = client.GetCitiesByCountryAsync("France").Result;

我已经完成了网络捕获(使用Wireshark),当发生此问题时,我看不到来自我的计算机的HTTP请求。 有人知道出了什么问题吗?也许我没有以正确的方式称这项服务。

提前致谢

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,Wireshark中没有传出的http请求。该项目必须使用具有凭据的公司代理才能连接到https地址,因此设置了BasicHttpSecurityMode.Transport。

原因是带有代理设置的.net Core 2.0中的错误。它尚未使用WinINet(IE / Edge)代理设置,因此您无法配置单独的代理,更多信息请参见https://github.com/dotnet/wcf/issues/1592

解决方案

将项目升级到.net Core 2.1,并将System.ServiceModel.Http和其他依赖关系更新为最新稳定版本(在我的情况下为4.5.3)后,将使用IE / Edge代理设置。