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

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,用正则表达式来判断是否是手机在访问,这样当你用手机来浏览你的应用时,将直接转到手机页面。

 

传苹果下一代Mac OS中将整合Siri及地图服务 TripAdvisor:使用AWS比服务器托管成本节省50% [MDCC精华]亚马逊AWS布道师Kingsley Wood:灵活IT架构之道 亚马逊诉讼彰显谷歌在公有云领域威慑力十足 AWS全球创业大赛 奖金100000美元 YY:破冰而出,成功上市 Xtreme Labs工程师:Android开发常陷入的五大深坑 Elon Musk:没了乔布斯的苹果干不过谷歌 旁门左道:第一次开发移动游戏就赚到28623美元 移动周报:小聪明赚大钱 游戏SEO如何耍鸡贼? 创翼全国 六城联动——2012移动互联网应用创新大赛开放日 全国六城联动沙龙 爱丽丝+福尔摩斯 Game Insight解谜游戏玩出新花样 Windows Phone 8 SDK大升级:部分功能兼容WP7 信息大图《愤怒的小鸟》发家史 Intel预测:10年之后你的手机是48核的 消息推送惹怒用户:应用开发者请别太过分 创新工场:我们如何孵化未来? iOS越狱比例下降:国内移动开发环境怎么了? 响应式图像技术与资源分享 看Twitter如何应对大选:少些Ruby 多些Java 软件开发中常见的十大系统瓶颈 [CTO俱乐部87期]三人行架构分享:开源是背后的支柱 推荐5款超实用的.NET性能分析工具 OpenStack基金会主席Alan Clark访华 欢迎提问 程序员的十大烦恼 兼顾性能和兼容体验:HTML5时代的浏览器全面测试 Lisp的本质 Amazon工作环境恶劣员工高流失率 为何却依然能持续成功和创新? 对几个软件开发传统观点的质疑和反驳 [实战分析] 编写高效的JavaScript程序 Twitter的系统编程 如何根据Task ID或Process ID得到hwnd 如何让程序启动时自动hide()阿! 问一个最大化窗体与任务栏的关系的问题 把一表中一字段(字符型)以一條記錄返回出來. Rational Rose 中没有Delphi方面得模块,哪儿有与Delphi接口下载 谁有ActiveReport 2的中文例子和原程?在线等待!急急急! 大家来讨论一下,《设计模式》应该怎么看!! 关于打印的问题,高手关注! datagrid如何实现分页,。net菜鸟 声音问题 access数据库加密后,如何再用ADO与之连接? 有谁用过ms Agent? 很菜的问题! delphi里的widestring类型对应着BCB里的什么类型啊 开了一个socket,acept后如何给ie发一个字符串显示出来? access数据库加密后,如何再用ADO与之连接? 如何查询出所有用户表名 PWS中的一个小问题 请问DataSet里的Relations和Constraints有什么区别? 想了三天,还是做不出 请问如何创建一个大于屏幕分辨率的窗口? 公开putao的最大秘密,他女友的隐私! 关于不同版本的用户对象的问题!(online) 在批处理中设置路径,有空格系统不认怎么办? 为了忘却的纪念(今天是咱们的国耻日) 关于JSP菜单实现的问题? 如何判断数组是否被赋值? 用MSCHART的二维折线图如何实现左右坐标分别标识不同的曲线? 请问招行的网上银行的在网上点击安装是怎么实现的呀? 100分只是开始。。。 如果回答继续加!! 一个template问题,想不出办法,高手请进 送分题:如何改变dll的调试可执行文件? 大家看看代码 真搞不懂为什么出错??? 如何在表单中设置包含字段http://schemas.microsoft.com/cdo/workflow/response 如何使用VBSCRIPT读取本页文本框中的数据, (不能用表单提交和JAVASCRIPT 能不能?) 我在桌面上执行一个应用程序,运行正常,但用pb中调用run("***.exe")运行是出错,提示是少了某些dll文件 我怎么才能使客户端发过来的经UF8编码的中文URL,还原成GD312,能找到页面? 我用openwithparm(w_1,arg),arg明明传递的是LONG型的数据,为什么用message.longparm接收到的是0,而一定要用message.doubleparm才能正确 问一个sql语句如何写,简单! 征集能够同时输出文本和图形的控件! 急寻bmp转gif的代码 封装在Dll中的窗口焦点问题 为什么我用JBUILDER编译JSP文件,用web run执行后会出现这些情况?? 有谁用过CMPPE2.0协议开发过网关程序的请进 win2000下内存使用的问题? 我每次都结贴子的,不信你们查一下啊,这次再请帮忙,谢谢哦 在公共文件夹如公告窗体的原件与回复件是如何关联的? delphi中form中放了一副图,怎样让图可见而form不可见? 一个关于vba的应用问题?合并文档 英文版的vb中该如何来把一个项目进行打包呢(想把它安装到一台没有装vb 的电脑上) 删除多余的重复记录 六年级作文《记一节有趣的课》一定要新颖 字数不要太多 也不能太少 急用 三天内请广大朋友尽快回复 赵亮赵亮赵亮赵亮赵亮赵亮赵亮,整死你,还得本小姐回家挨骂了,小亮亮~下次来师大玩死你! 我的爸爸作文 怎样写只要说出第一自然段写什么好,怎样开头,然后第二自然段怎样写,一直接下去说.(写好加分)其实不用写这么多,比如:开头写样子,第二自然段写什么,第三自然段写 平面镜与水平面成45度角,在镜前有一发光点在水平向右匀速运动,则他的象运动方向如何,画平面镜与水平面成45度角,在镜前有一发光点在水平向右匀速运动,则他的象运动方向如何,画图说明( 一个花坛的半径是8米,在他的周围有一条宽2米的环形小路,小路的面积是多少平方米 作文开头 “我的父亲……” 这是第几人称? 一平面镜与水平面成45度角固定在水平桌面上,一小球以1m / s 的速度沿桌面面镜匀速滚去则小球在平面镜中的像 ( )A.以1m / s 做竖直向上的运动 B.以1m / s 做竖直向下的运动 C.以2m / s 做竖直 中国传统文化概论.救命啊练习题3一、填空题1、_______是中国史学的奠基时期._______是我国史学的确立时期._______是我国古代史学的繁荣时期._______是我国史学的嬗变时期.2、_______和_______中的 孔子弟子及其再传弟子所编篡的儒家经典著作是哪一部? 廉政作文500字怎么写? 我的父亲作文,结尾 孔子著作的儒家的经典著作《 》虽然只短短五千字,却流芳百世 关于校园一角的作文 我的爸爸作文结尾简短一点 《论语》是儒家学派经典著作之一,内容记录孔子及其门徒的( ),与( ),( ),( )合称‘四书’ 《中国传统文化概论》作业:谈一下对中国传统文化的认识比如谈下对具体的典籍的某本书或某一方面问题的认识.注意引用文献,不少于800字. 四年级的作文:我和_____(350字左右) 《论语》这本书是儒家的经典著作,从语录中看,孔子认为学习的快乐在于?各位大侠们帮帮我吧! 廉洁走进校园"作文,800字左右 帮我写一篇关于廉洁修身的征文,700字左右 小明要做一个对角线互相垂直的等腰梯形形状的风筝,其面积为2450平方厘米,则它的对角线的长为多少? 下图是使用1:500比例尺绘制的一块三角形的学校花园平面图,请你量出数据,在计算出这块地的实际面积4cm,底3cm.老师算50平方米 用一块面积为450cm^2的等腰梯形彩纸做风筝,为了牢固起见,用……用一块面积为450cm^2的等腰梯形彩纸做风筝,为了牢固起见,用竹条做梯形的对角线,对角线恰好互相垂直,那么至少需要竹条______cm 【要解题过程】一个对角线互相垂直的等腰梯形形状的风筝,其面积为2450平方厘米,则它的对角线的长答案这个方程:2450=a×a/2 a=70怎么算的啊? 下图是用1:4000的比例尺画出的一块稻田平面图.它的实际面积是多少平方米?上底8 高6 下底15 单位cm是个梯形 一束光线与水平面成30°角向下照射时,想让光线经平面镜反射后沿水平方向射出,则入射角可能是( ) A.15° B.45° C.75°D.A.B.C三者都有可能 (要说明理由,为什么选这个答案.谢谢了.) 和父母写信交流600字作文 怎样校园里写的芒果树的作文 作文:爸爸我想对你说开头和结尾 孔子为什么创建儒学 要有哲理性 多一点 越多越好 有关借物喻人 芒果树旳作文借物喻人 芒果树 作文 一束光线与水平面成30度从右上方向左下方射入.通过一平面镜的反射,要使光线水平向右射出则平面镜与水平面的夹角为( )要使光线向右射出,则平面镜与水平面的夹角为( ) 孔子在哪里创立儒家学派在什么地方 中国传统文化概论急求以下简答题答案:1.地理、气候环境对中国传统文化的影响有哪些?2.古代社会政治环境对中国传统文化的影响有哪些?3.中国传统文化的主要特点是什么?4.简述儒家的人 爸爸给我的爱...这篇作文的开头和结尾...要靠谱,谢啦... 为什么孔子创立的学派被称为儒家? 芒果树和芒果树的种植请问江西的南昌能种植芒果树和芒果树吗?有什么要注意的?现在种能成活么? 一束光线与水平面成30度夹角,要使反射光线沿水平方向传播,那么平面镜与水平方向所成的夹角为多大?平面镜作在哪? 孔子是在什么时期创建儒家学派的?急! 一次有趣的课 作文要新颖点的材料 不许抄袭 以廉洁在我心写一篇800字以上的作文不要初中生的作文,我读大一的,不要抄袭的,只有二十分,拜托帮我下,尽快啊,过几天就要教了 在课外活动课上,老师让同学们做一个对角线互相垂直且相等的四边形形状的风筝,其面积为450cm²,问 对所用的竹条至少需要多长?(还没学梯形) 一束平行光线与水平面成20度角射向地面,现用平面镜使反射光线平面射出,则镜面与水平方向成的夹角要有图形的 花园长200m,在平面图用4cm长的线段来表示,这幅图的比例尺是( 描写爸爸外貌的作文需要两句描写句,最好再另付10句描写,多一句加一分. 一束平行光线与水平面成20度角射向地面,现用平面镜使反射光线进入一竖井中,镜面与水平方向成的角应是多少?备选答案有:30度 35度 45度 55度 关于文化传统与教育哲学的论文我现在上的课是 文化传统与教育哲学 老师留了作业就是以“文化传统与教育哲学”为话题写2000字的论文 没了`~ 在课外活动课上,老师让同学们做一个对角线互相垂直的等腰梯形形状的风筝,其面积是450平方厘米问:对角线所用的竹条至少需多少厘米 物理题当入射光线与平面镜夹角为20度,若保持入射光线方向不变,转动平面镜,使入射光与平面镜夹角为50度当入射光线与平面镜夹角为20度,若保持入射光线方向不变,转动平面镜,使入射光与平 今天下午,李明和赵亮争夺冠亚军.修改病句 答滴好再加悬赏 孔子的思想为什么叫儒学 求一个代表廉洁自立的短文,500字左右 赵亮和王军两人同时从甲村出发去乙村,赵亮的速度为每小时9千米,王军的速度为每小时15千米,王军因有事在途中停留了1.5小时 ,因此比赵亮迟到0.5小时,求甲乙两村的距离,若设甲乙两村的距离 孔子为什么建立儒家 廉洁书信进家庭500字作文高手来 在一幅公园的平面图上,用10厘米的距离表示实际100米的距离.求这幅平面图的比例尺拜托各位了 3Q 孔子的儒学为何称儒 一节有趣的作文课作文 赵亮比弟弟大3岁,而赵亮的弟弟是5月出生的.他的年龄的2倍加上9.正好是出生那个月的总天数,求赵亮弟弟的年龄?方程,步骤及结果,thanks! 关于廉政的作文450字
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘