平時我們看一些網頁的時候會發現這樣的功能:有的頁面只能在微信裡訪問,如果在電腦上訪問就只顯示當前地址的二維碼。這個用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.1 MicroMessenger/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 ,所以我們可以據此來判斷用戶是否使用了微信浏覽器:
string userAgent = Request.UserAgent; if (userAgent.ToLower().Contains(micromessenger)) { Response.Write(歡迎您在微信中訪問我。); } else { Response.Write(請在微信中訪問本頁。); }
C#生成二維碼有一個非常好用的插件:ThoughtWorks.QRCode 。它的使用非常簡單,我們從官網上下載ThoughtWorks.QRCode.dll之後,引用到我們的項目裡,然後在頁面中引入ThoughtWorks.QRCode.Codec 命名空間,接下來就可以操作生成二維碼了:
///; html +=/// 生成二維碼 /// private void CreateQRCode() { string enCodeString = Request.Url.ToString(); QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//編碼方式(注意:BYTE能支持中文,ALPHA_NUMERIC掃描出來的都是數字) qrCodeEncoder.QRCodeScale = 10;//大小(值越大生成的二維碼圖片像素越高) qrCodeEncoder.QRCodeVersion = 0;//版本(注意:設置為0主要是防止編碼的字符串太長時發生錯誤) qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//錯誤效驗、錯誤更正(有4個等級) string filename = Request.Url.ToString().Replace(/, ).Replace(\, ).Replace(., ).Replace(:, ).Replace(?, ).Replace(&, ) + .jpg; string path = Server.MapPath(~/qrcode/); if (!File.Exists(path + filename)) { Bitmap bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8); if (!Directory.Exists(path)) Directory.CreateDirectory(path); bt.Save(path + filename); } string html =
string userAgent = Request.UserAgent; if (userAgent.ToLower().Contains(micromessenger)) {
Response.Write(歡迎您在微信中訪問我。); } else { CreateQRCode(); }
到這裡就大功告成了,我們來看下在普通浏覽器和微信浏覽器上浏覽這個頁面的不同效果:
在普通浏覽器上訪問的效果
用微信掃描訪問的效果