为了账号安全,请及时绑定邮箱和手机立即绑定

.NET Core学习笔记(6)——UWP略过SSL证书调用SignalR服务

标签:
C# .NET

在前一篇《.NET Core学习笔记(5)——WebAPI从Server端push消息到Client》中,我们简单学习了.NET Core版本SignalR的使用。Sample工程里我们创建了一个Console的Client接受来自SignalR Hub推送的消息。

在最近的工作中,我尝试在UWP的项目中使用WebAPI+SignalR来代替WCF的双工消息。在创建demo的过程中,意外地遇到了错误。发现在.NET Core3.1中,忽略SSL证书的方式和以往有了较大的不同。

https://img1.sycdn.imooc.com//5ea94ec20001845816450730.jpg

出现这个错误是因为我们的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

这次的小短篇就到这里,欢迎各路大牛批评指正!


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消