C# Windows 10 mobile universal应用程序上的WCF错误
拥有需要呼叫WCF服务的Windows 10移动应用程序。这是一项现有服务,运行在另一台服务器(c#/IIS)上,我可以很好地连接到该服务,并使用以下代码从我的Xamarin.Android应用程序拨打电话:C# Windows 10 mobile universal应用程序上的WCF错误,c#,.net,wcf,windows-10-universal,windows-10-mobile,C#,.net,Wcf,Windows 10 Universal,Windows 10 Mobile,拥有需要呼叫WCF服务的Windows 10移动应用程序。这是一项现有服务,运行在另一台服务器(c#/IIS)上,我可以很好地连接到该服务,并使用以下代码从我的Xamarin.Android应用程序拨打电话: public PacTracMobileServerClient GetClient() { var config = new Config.AppConfig(); var serverUrl = config.GetODSServerAd
public PacTracMobileServerClient GetClient()
{
var config = new Config.AppConfig();
var serverUrl = config.GetODSServerAddress;
var binding = new CustomBinding();
//TODO: Make these timeouts configurable
binding.SendTimeout = TimeSpan.FromMinutes(2);
binding.ReceiveTimeout = TimeSpan.FromMinutes(2);
var tme = new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8);
binding.Elements.AddRange(tme);
if (serverUrl.StartsWith("https", StringComparison.CurrentCultureIgnoreCase))
{
//HTTPS binding
var https = new HttpsTransportBindingElement
{
MaxReceivedMessageSize = int.MaxValue,
MaxBufferSize = int.MaxValue,
RequireClientCertificate = false,
};
binding.Elements.Add(https);
//Trust all certificates
//ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
}
else
{
//HTTP binding
var http = new HttpTransportBindingElement
{
MaxReceivedMessageSize = int.MaxValue,
MaxBufferSize = int.MaxValue
};
binding.Elements.Add(http);
}
var endPoint = new EndpointAddress(new Uri(serverUrl));
return new PacTracMobileServerClient(binding, endPoint);
}
同样,上面的内容在Xamarin.Android中也可以使用(尽管如果有建议,我会很乐意改进)。由于我的Xamarin.Android实现是.Net,我希望它能与这个Windows UWP应用程序一起工作。除了因为信任所有证书而被注释掉的行之外,一切似乎都很好,因为似乎ServicePointManager在UWP中不受支持
综上所述,当我尝试在我的UWP应用程序中使用此客户端拨打电话时,我遇到以下错误
net\u http\u客户端\u执行\u错误
所以,有两个问题
谢谢 我的第一个想法是,该服务可能在本地主机上运行,这可能是UWP应用程序不允许的,如果是这样,请看一看。您可以通过查看此解决方案来解决#2。感谢您提供了这两种解决方案,我们将同时尝试这两种解决方案。关于更多信息,我正在从我的开发环境通过usb部署到移动设备,并在调试中运行时从移动设备尝试,移动设备通过wifi连接到我的网络,wifi可以访问服务器。“我想这是可行的,而且是被允许的。”谢尔比兹我两种都试过了。首先,我没有环回问题。其次,我确认我的问题可能是由于证书问题。我阅读了您的第二个链接,它看起来像是我需要忽略的证书问题,但它使用了httpbaseprotocolfilter,然后您将其传递到httpclient,但正如您从上面的代码片段中所看到的,我使用的wcf客户端是通过添加不使用httpclient的服务引用实现的。我如何在我的wcf代码中仍然实现这些过滤器?是的,我想我在最初研究这个问题时忽略了这个事实。您可以尝试查找我认为不是最好的解决方案,但您可以为证书问题添加协议过滤器。唯一的其他选择可能是查看服务使用的证书,看看它是否确实无效(过期等),并修复该问题。我的第一个想法是,该服务可能在本地主机上运行,而UWP应用程序可能不允许该服务,如果是,请查看。您可以通过查看此解决方案来解决#2。感谢您提供了这两种解决方案,我们将同时尝试这两种解决方案。关于更多信息,我正在从我的开发环境通过usb部署到移动设备,并在调试中运行时从移动设备尝试,移动设备通过wifi连接到我的网络,wifi可以访问服务器。“我想这是可行的,而且是被允许的。”谢尔比兹我两种都试过了。首先,我没有环回问题。其次,我确认我的问题可能是由于证书问题。我阅读了您的第二个链接,它看起来像是我需要忽略的证书问题,但它使用了httpbaseprotocolfilter,然后您将其传递到httpclient,但正如您从上面的代码片段中所看到的,我使用的wcf客户端是通过添加不使用httpclient的服务引用实现的。我如何在我的wcf代码中仍然实现这些过滤器?是的,我想我在最初研究这个问题时忽略了这个事实。您可以尝试查找我认为不是最好的解决方案,但您可以为证书问题添加协议过滤器。唯一的其他选择可能是查看服务使用的证书,以查看它是否确实无效(过期等),并修复该问题。