说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

ASP.NET如何用C#代码检测手机浏览器

HTML文档下载 WORD文档下载 PDF文档下载
在建设一个网站时,如果同时面向手机与桌面用户,为了使手机用户得到更佳的访问体验,我们需要检测浏览器类型,将手机浏览器的访问转到手机专门的页面。

 

在建设一个网站时,如果同时面向手机与桌面用户,为了使手机用户得到更佳的访问体验,我们需要检测

浏览器类型,将手机浏览器的访问转到手机专门的页面,我们用C#通过正则表达式来实现:

 

 

创建正则表达式

 

 

Regex b = new Regex(@"android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline);

Regex v = new Regex(@"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|e\\-|e\\/|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\\-|2|g)|yas\\-|your|zeto|zte\\-", RegexOptions.IgnoreCase | RegexOptions.Multiline); 

 

为了执行这些代码,请参考下面的步骤:
1. 添加命名空间 
using System.Text.RegularExpressions;
2. 在page Load事件中,这样处理:
string u = Request.ServerVariables["HTTP_USER_AGENT"];
Regex b = new Regex(@"android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Regex v = new Regex(@"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|e\\-|e\\/|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\\-|2|g)|yas\\-|your|zeto|zte\\-", RegexOptions.IgnoreCase | RegexOptions.Multiline);
if ((b.IsMatch(u) || v.IsMatch(u.Substring(0, 4))))
{
Response.Redirect("手机浏览页面");
}
else
{
// 正常页面
}
代码中我们根据HTTP_USER_AGENT,用正则表达式来判断是否是手机在访问,这样当你用手机来浏览你的应用时,将直接转到手机页面。

 

束文辉:Intel如何玩转OpenStack Facebook社交业务进军中国内地,困难重重 《近匠》透镜:代码级定位,让App性能监控更从容! 联想移动与云新战略 重点深耕企业移动方案 美国高通公司在深圳召开参考设计及无线创新峰会 提供“一站式”整合服务 友盟正式推出消息推送平台 iOS 8新功能再曝光:或推出分屏多任务功能 Framer:开源原型设计工具,巨头们的心头好 亚特兰大峰会精彩看点:软件吞噬世界,OpenStack是变革核心 数据中心基础设施是大数据战略成败的关键 实时大数据分析:网络分析的一种新方法 最新消息:iPhone 6将采用更大、更清晰的1704x960分辨率屏幕 吴毅挺:OpenStack是开源IaaS平台大势所趋的集大成者 做好扁平化设计-交互篇 狙击Google Glass?三星将推基于Tizen系统的Gear Glass GamePlay:跨平台开源3D游戏引擎,黑莓的努力你不懂 “少即是多” 高通QRD大会精华汇总 天云盾:构筑在云端的Web安全防护 解析大数据时代的数据库集群技术 莫里航海图,最早的大数据实践 弥补空缺!HappyFox面向iOS开发者发布开源移动HelpDesk SDK Chitika北美网络流量报告:WP KO黑莓、iOS超Android 《近匠》秦时明月:知名IP光环下的生存之道 微软研究院正式发布编程学习游戏Code Hunt 走近讲师:Memblaze刘爱贵讲述云计算中的闪存应用 【云先锋】ClouDil云方案:PB级大数据解决方案 一周消息树:这是要“发”啊?Google Brain之父正式加盟百度 最受欢迎的游戏引擎集结号:小白篇 多盟总设计师邢开捷:四两设计拨千金 Cocos2d-x游戏《Monster Strike》终结《智龙迷城》霸榜神话 高通物联网技术解决方案:从汽车到智慧城市 ***List Control 控件怎么编辑子项??200分重谢!!*** VB 如何开发在IE中可以直接下载安装的ActiveX控件? 大虾,我还该学什么?散分 do form 怎麼偉參數啊? 在 form 中又自私用啊? 請大家指教,謝謝!! 在系统权限中,create any table 和create table 我搞不清,查了书本也是迷糊,请帮我解释一下! 如何让BCB运行时不自动创建一个新工程? 问题青年来了 : 怎么把一个Win32 Application 改成ActiveX啊?解决了给你100分 新装宽带,征集防火墙方案 垃圾收集 在什么时候发生? 一个数据备份与还原路径合法的问题(50分)在线等待 将字符串中第i个字符删除? 什么函数返回ASCII码的对应的字符 Rose中Class Diagram中的几种类,我不清楚阿 给我一点对perl/python的初步认识 真有这样的事? 如何对jpg文件进行像素处理? 如何用正则表达式不区分大小写的匹配“<script ...>...</script>”? 为啥我得机器不能access 请教一个简单的问题 这样为什么不能加入记录,怎样加 请问,我想用两台2000共用一个ip上网,一个做iis服务器,另外一个做传奇的服务器。谁知道怎么做啊。 菜单拖动事件 使用TCP/IP编程是怎么一回事? 珊珊艾的玉照放出来啦!! 语句extern "C" AFX_EXT_API int WINAPI ExecSQL( CString strSQL ); 怎么理解?关键字AFX_EXT_API有何用? 急,怎么将String中的"/"替换成"\"? 四川的分数出来了吗? 关于MSFlexGrid的一个问题 高分求购经典旧书配本源码 《Windows编程指南》,清华出版社,成功后立马送分 关于百度插件问题 怎样用Request.QueryString("k")的值和select pass from c while pass=44的结果比较 关于在QR中横向打印的问题........... 为什么有的网站明明是用了数据库,但是网页文件却是.html的? 如何实现数据库中的图片存储 select ???? 这怎解决啊,Help!!!! 如何将结构相同的两表的数据合并? 建立一个简单的网上直播服务器需要那些步骤? 请教一个关于属性页的问题 可以这样查询吗 ?请问怎么出现设置目录的对话框,并且把路径保存edit中!!急急急急急急急(lxjgyl82) 关于监考管理 怎么通过ado动态的连接数据库 web服务器控件和html服务器控件有什么区别 合肥工業大學爆发學潮 Java程序监听数据库的操作 串口 对DBNavigator组件的操作,请大家帮忙 怎么看历史短消息啊?原来有的怎么看啊? 一个sql的意义! 我在程序启动时所出现的封面如果关闭程序? 宁波望春路路面坑洼 相关部门已安排整杭州市区经济适用房上市交易细则出台 专家解析杭州经适房交易细则杭州有860个志愿服务组织 完善机制杭州市级机关和事业单位9月底前启动垃余姚供电公司设电力应急小分队保障高温宁波治堵新进展 断头路打通公交专用道宁波周日前无明显降水 继续发布干旱橙杭下周或告别35℃ 临安人工增雨山核湖州长兴银杏树因高温枯黄 今年或没有干旱致农民损失惨重 急盼能纳入政策性浙江持续高温天基本结束 或提高抗旱应宁波公交线路再优化 821路掐头去尾浙江2013年教育支出938.30亿杭州供电公司设计低压T接箱助龙井茶园宁波市卫生局引入淘宝式评价 差评直接工地扬尘成杭州第三号空气质量杀手温州限购令引质疑 政府称未违反国务院杭州本地蔬菜受干旱影响减产 价格波动杭州明起下雨最高温或跌35℃ 双台风浙江今年高温达44天 已人工降雨25有个大爷坚信自己是亚瑟王,他坚守在巨卡索拉:西班牙将看到最好科斯塔本周热门机价格走势图狗仔摄影五十年囤积人才?皇马有意贝蒂斯新星数据调查称欠发达地区网名更爱用手机上人类头发化身阴郁工业景观哈利洛维奇:巴萨本该签下科瓦契奇Apple Watch成功或推动移动由研究者倡导的 REDUCE 研究纳股票大涨前会发出以下几大信号我们究竟需要怎样的儿童类APP?2014中国清洁(成都)博览会即将举迪涅:在奥林匹克首秀太激动人心华为SnapTo将在美国开售完成任务管理、知识沉淀及任务评价体系京东王牌特供促销活动详解中国第一代操盘手最后都落得什么下场?年轻活力 双胞胎小鲜肉演绎《ReflHTC推更新修复M9拍照缺陷本周锋投:大佬又一次迷上基因工程鸟
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘