zoukankan      html  css  js  c++  java
  • .NET Core学习笔记(6)——UWP略过SSL证书调用SignalR服务

    在前一篇《.NET Core学习笔记(5)——WebAPI从Server端push消息到Client》中,我们简单学习了.NET Core版本SignalR的使用。Sample工程里我们创建了一个Console的Client接受来自SignalR Hub推送的消息。
    在最近的工作中,我尝试在UWP的项目中使用WebAPI+SignalR来代替WCF的双工消息。在创建demo的过程中,意外地遇到了错误。发现在.NET Core3.1中,忽略SSL证书的方式和以往有了较大的不同。

    出现这个错误是因为我们的SignalR服务是以https协议发布在IISExpress上,而UWP程序调用SignalR client时会强制校验证书。一般解决的方式就是给UWP工程添加证书。但如果我只想做一个匿名登录的demo用client,或者我不愿信任该https网站的证书,那就要绕过SLL证书的校验。
    上网搜了一下相关问题,答案确实很多,但都是旧有版本的解决方案。思路就是通过HttpClientHandler来设置略过校验。我这里贴一个.NET Core3.1版本的代码,给我自己做个记录,以备不时之需。

    Action<HttpConnectionOptions> configureHttpConnection = (opts) => {
                    opts.HttpMessageHandlerFactory = (message) =>
                    {
                        if (message is HttpClientHandler clientHandler)
                            // bypass SSL certificate
                            clientHandler.ServerCertificateCustomValidationCallback +=
                                (sender, certificate, chain, sslPolicyErrors) => { return true; };
                        return message;
                    };
                };
    
                var connection = new HubConnectionBuilder()
                    .WithUrl("https://localhost:44354/NotificationHub", configureHttpConnection)
                    .Build();
    
                await connection.StartAsync();

    完整的Sample代码参加:
    https://github.com/manupstairs/SignalRTest1
    这次的小短篇就到这里,欢迎各路大牛批评指正!

  • 相关阅读:
    win10磁盘碎片整理
    Windows10系统一键结束所有运行程序
    win10关闭后台应用程序进程的方法
    第一章 进化的分子基础
    xshell分隔符及全路径提示
    GEOquery
    Gviz
    用R包来下载sra数据
    Analyzing Microarray Data with R
    IRanges package
  • 原文地址:https://www.cnblogs.com/manupstairs/p/12815067.html
Copyright © 2011-2022 走看看