C# 忽略.Net标准2.0中的SSL证书

C# 忽略.Net标准2.0中的SSL证书,c#,.net,ssl,xamarin.forms,.net-standard-2.0,C#,.net,Ssl,Xamarin.forms,.net Standard 2.0,我正在it中创建一个Xamarin跨平台应用程序,我用.Net标准2.0替换了可移植类库。从这个项目中,我们正在调用托管在azure service fabric群集上的web服务(此服务使用自签名证书托管)。我是 发出连接请求时出现以下错误- InnerException{System.Runtime.InteropServices.COMException (0x80072F0D):无法找到与此错误代码关联的文本 找到了 证书颁发机构无效或不正确 在System.Runtime.Except

我正在it中创建一个Xamarin跨平台应用程序,我用.Net标准2.0替换了可移植类库。从这个项目中,我们正在调用托管在azure service fabric群集上的web服务(此服务使用自签名证书托管)。我是 发出连接请求时出现以下错误-

InnerException{System.Runtime.InteropServices.COMException (0x80072F0D):无法找到与此错误代码关联的文本 找到了

证书颁发机构无效或不正确

在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中 在 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Net.Http.HttpHandlerToFilter.d_u15.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Net.Http.DiagnosticsHandler.d__2.MoveNext() ---来自引发异常的上一个位置的堆栈结束跟踪---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Net.Http.HttpClientHandler.d_u111.MoveNext()}System.Exception {System.Runtime.InteropServices.COMException}

我认为是自签名SSL导致了这个问题,一般来说为了绕过证书,我们使用下面的代码片段

ServicePointManager.ServiceCertificateValidationCallback += (o, c, ch, er) => true;
它适用于以.Net framework 4.6.1为目标的控制台应用程序,但此代码似乎不适用于.Net标准2.0和.Net核心2.0应用程序。 为了绕过.Net标准和.Net核心应用程序中的证书,我们是否必须做一些不同的事情。 下面是产生此错误的示例代码区域

IHubProxy _hub;
string url = @"https://www.xyz:com:8080/";
var connection = new HubConnection(url);
_hub = connection.CreateHubProxy("MyHub");
connection.Start().Wait();

ServicePointManager在.NET Core中不可用,但您应该能够使用System.NET.Http 4.1+使用HttpClientHandler.ServerCertificateCustomValidationCallback属性设置自定义委托


请参阅dotnet/corefx GitHub上的和。

您只需在平台特定的项目中编写,如在主活动/应用程序委派中:

ServicePointManager.ServerCertificateValidationCallback +=
     (sender, cert, chain, sslPolicyErrors) => true;

我不得不做一个双重拍摄,但这不是一个转载,尽管潜在的问题可能是相同的。与netstandard2 Xamarin.Forms项目完美地为Xamarin.Android工作!谢谢注意。您应该将其添加到MainActivity.OnCreate()中,该函数不适用于Xamarin。Forms 3.2.0.839982尝试使用ASP.NET Core 2.1连接安全API