zoukankan      html  css  js  c++  java
  • C#判断用户是否使用微信浏览器,并据此来显示真实内容或二维码

    平时我们看一些网页的时候会发现这样的功能:有的页面只能在微信里访问,如果在电脑上访问就只显示当前地址的二维码。这个用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     /// <summary>  
     2         /// 生成二维码  
     3         /// </summary>  
     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 = "<img src='qrcode/" + filename + "' width='330px' height='330px'/>";  
    23             html += "<h3>该内容仅限在微信浏览器下阅读!请用微信扫描,打开此页面!</h3>";  
    24             divQRCode.InnerHtml = html;  
    25         }  
    复制代码

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

    1 <div id="viewQRCode" runat="server" style="text-align:center;">          
    2 </div> 

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

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

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

    在电脑上访问此页面

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

    微信访问的效果

    用微信扫描访问的效果

  • 相关阅读:
    最大子数组问题(分治策略实现)
    Solving the Detached Many-to-Many Problem with the Entity Framework
    Working With Entity Framework Detached Objects
    Attaching detached POCO to EF DbContext
    如何获取qq空间最近访问人列表
    Health Monitoring in ASP.NET 2.0
    problem with displaying the markers on Google maps
    WebMatrix Database.Open… Close() and Dispose()
    Accessing and Updating Data in ASP.NET: Retrieving XML Data with XmlDataSource Control
    Create web setup project that has crystal reports and sql script run manually on client system
  • 原文地址:https://www.cnblogs.com/Alex80/p/5809986.html
Copyright © 2011-2022 走看看