博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#判断用户是否使用微信浏览器,并据此来显示真实内容或二维码
阅读量:5812 次
发布时间:2019-06-18

本文共 2872 字,大约阅读时间需要 9 分钟。

平时我们看一些网页的时候会发现这样的功能:有的页面只能在微信里访问,如果在电脑上访问就只显示当前地址的二维码。这个用C#怎么实现呢?我们结合代码来看看。

首先,我们需要先判断用户使用的是什么浏览器,这需要用到 Request.UserAgent 属性,通过捕捉微信浏览器和普通浏览器的UserAgent会发现它们的区别,下面是几款常用浏览器的UserAgent:

微信浏览器:Mozilla/5.0(Linux;U;Android 4.4.2;zh-cn;2013022 Build/HM2013022)AppleWebKit/533.1(KHTML,like Gecko)Version/4.0MQQBrowser/5.4 TBS/025438 Mobile Safari/533.1MicroMessenger/6.2.0.54_r1169949.561 NetType/WIFI Language/zh_CN

火狐:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0

IE11:Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

谷歌浏览器:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36

 

对比上面4个浏览器的UserAgent可以发现,微信浏览器的UserAgent最关键的就是包含上面标红色的MicroMessenger ,所以我们可以据此来判断用户是否使用了微信浏览器:

 

1     string userAgent = Request.UserAgent;  2     if (userAgent.ToLower().Contains("micromessenger"))  3     {  4         Response.Write("欢迎您在微信中访问我。");  5     }  6     else  7     {  8         Response.Write("请在微信中访问本页。");  9     }

到此我们实现了判断用户是否使用了微信浏览器,下面开始第二步:在非微信浏览器访问时生成二维码。

C#生成二维码有一个非常好用的插件:ThoughtWorks.QRCode 。它的使用非常简单,我们从官网上下载ThoughtWorks.QRCode.dll之后,引用到我们的项目里,然后在页面中引入ThoughtWorks.QRCode.Codec 命名空间,接下来就可以操作生成二维码了:

 

1     ///    2         /// 生成二维码   3         ///    4         private void CreateQRCode()   5         {   6             string enCodeString = Request.Url.ToString();   7             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();   8             qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)   9             qrCodeEncoder.QRCodeScale = 10;//大小(值越大生成的二维码图片像素越高)  10             qrCodeEncoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误)  11             qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//错误效验、错误更正(有4个等级)  12       13             string filename = Request.Url.ToString().Replace("/", "").Replace("\\", "").Replace(".", "").Replace(":", "").Replace("?", "").Replace("&", "") + ".jpg";  14             string path = Server.MapPath("~/qrcode/");  15             if (!File.Exists(path + filename))  16             {  17                 Bitmap bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);  18                 if (!Directory.Exists(path))  19                     Directory.CreateDirectory(path);  20                 bt.Save(path + filename);  21             }  22             string html = "";  23             html += "

该内容仅限在微信浏览器下阅读!请用微信扫描,打开此页面!

"; 24 divQRCode.InnerHtml = html; 25 }

 

 

 

页面上有一个div来显示二维码提示。

1 
2

 

修改上面判断微信浏览器的代码:

1     string userAgent = Request.UserAgent;  2     if (userAgent.ToLower().Contains("micromessenger"))  3     {                    Response.Write("欢迎您在微信中访问我。");  4     }  5     else  6     {  7         CreateQRCode();  8     }

 

到这里就大功告成了,我们来看下在普通浏览器和微信浏览器上浏览这个页面的不同效果:

在电脑上访问此页面

在普通浏览器上访问的效果

微信访问的效果

用微信扫描访问的效果

你可能感兴趣的文章
蓝图(Blueprint)详解
查看>>
Spark之SQL解析(源码阅读十)
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)...
查看>>
海贼王十大悲催人物
查看>>
BigDecimal 舍入模式(Rounding mode)介绍
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据
查看>>
git reset 三种用法总结
查看>>
hdfs笔记
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>