MSDN使得检测移动浏览器变得非常容易:
if (Request.Browser["IsMobileDevice"] == "true" )
{
Response.Redirect("MobileDefault.aspx");
}
实际上,看起来您也可以只检查Request.Browser.IsMobileDevice。但这实际上是如何运作的呢?我甚至没有.browser文件......幕后发生了什么? ASP.NET 2.0是否有一些内置的默认值?
答案 0 :(得分:56)
.NET附带了许多* .browser文件:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers
运行时使用* .browser文件中的正则表达式来匹配传入的User-Agent字符串,然后根据它找到的每个匹配设置一堆属性(层次结构中可能有几个)。
如果您需要深入的移动设备支持,请考虑安装MDBF,这会增加对大约400台设备的支持:
答案 1 :(得分:15)
现在,4年后,它变得更加简单了
Request.Browser.IsMobileDevice
答案 2 :(得分:2)
因为对于大多数网站而言,实际上屏幕的大小并不重要(至少在谈论现代手机上有Safari和Chrome之类的东西时)不会检查分辨率是否最大感?
Request.Browser.ScreenPixelsHeight
和
Request.Browser.ScreenPixelsWidth
答案 3 :(得分:1)
我不会依赖MSDN链接,不幸的是移动浏览器没有通用标准,许多人试图模仿他们的非移动浏览器。如果它不能识别,它也会返回true。请参阅此link。
答案 4 :(得分:1)
我目前的理解是,只有一个确切的解决方案可以检测浏览器是否可移动,然后检测其实际功能。这个解决方案是ScientiaMobile的WURFL(http://www.scientiamobile.com)。截至8月30日,每次使用都不再免费。 WURFL现在在AGPL下发布了ASP.NET API。数据存储库还附带一个特定的许可证,该许可证不允许复制和使用与标准API不同的API(除非购买商业许可证)。
因此,出于实际目的,其他方法(如51Degrees)不能与更新近和未来版本的WURFL存储库一起使用,这将使51Degrees难以检测新设备(例如,Windows Phone 7.5)。
对于MDBF(一个被解雇的项目),它仍然可以检测设备是否是移动的(比ASP.NET中的IsMobileDevice好得多)。就设备的属性而言,它并不完全可靠。它坚持认为我的HTC Desire Android屏幕尺寸为240x320,这显然是不正确的。
我的公司购买了WURFL许可证,我们对此非常满意。
答案 5 :(得分:0)
当我添加51Degrees时问题已经解决,只需使用Nuget添加51degrees即可。点击此处https://51degrees.codeplex.com
答案 6 :(得分:0)
只需使用以下代码,
if (Request.Browser.IsMobileDevice)
{
Response.Redirect("MobileDefault.aspx");
}