【发布时间】:2018-05-06 08:21:48
【问题描述】:
我正在其中创建一个 Xamarin 跨平台应用程序,我已将可移植类库替换为 .Net Standard 2.0。从这个项目中,我们正在调用托管在 azure 服务结构集群上的 Web 服务(该服务使用自签名证书托管)。我是 发出连接请求时出现以下错误 -
InnerException {System.Runtime.InteropServices.COMException (0x80072F0D): 与此错误代码关联的文本不能 找到了。
证书颁发机构无效或不正确
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Net.Http.HttpHandlerToFilter.d__15.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Net.Http.DiagnosticsHandler.d__2.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Net.Http.HttpClientHandler.d__111.MoveNext()} System.Exception {System.Runtime.InteropServices.COMException}
我认为是自签名 SSL 导致问题,一般为了绕过证书我们使用以下代码 sn -p
ServicePointManager.ServiceCertificateValidationCallback += (o, c, ch, er) => true;
它适用于面向 .Net 框架 4.6.1 的控制台应用程序,但此代码似乎不适用于 .Net Standard 2.0 和 .Net Core 2.0 应用程序。 我们是否必须做一些不同的事情才能绕过 .Net Standard 和 .Net Core 应用程序中的证书。 以下是产生此错误的示例代码区域
IHubProxy _hub;
string url = @"https://www.xyz:com:8080/";
var connection = new HubConnection(url);
_hub = connection.CreateHubProxy("MyHub");
connection.Start().Wait();
【问题讨论】:
-
我不得不重复一遍,但这不是this question 的转贴,尽管根本问题可能相同。
标签: c# .net ssl xamarin.forms .net-standard-2.0