IsMobileDevice如何工作?

MSDN使得检测移动浏览器听起来如此简单:

if (Request.Browser["IsMobileDevice"] == "true" ) { Response.Redirect("MobileDefault.aspx"); } 

其实,看起来你也可以只检查Request.Browser.IsMobileDevice。 但是,这实际上是如何工作的? 我甚至没有一个.browser文件…这里幕后发生了什么? ASP.NET 2.0有一些内置的默认值吗?

.NET提供了许多* .browser文件:

 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers 

运行时使用* .browser文件中的正则expression式来匹配传入的User-Agentstring,然后根据find的每个匹配(在层次中可以有几个匹配)设置一堆属性。

如果您需要深入的移动设备支持,请考虑安装MDBF,其中添加了对大约400个设备的支持:

http://mdbf.codeplex.com/

现在,4年后,这更简单了

 Request.Browser.IsMobileDevice 

因为对于大多数网站来说,实际上屏幕的大小并不重要,至less在讨论具有Safari和Chrome等function的现代手机时,是不会检查分辨率最重要的?

 Request.Browser.ScreenPixelsHeight 

 Request.Browser.ScreenPixelsWidth 

我不会依赖于MSDN链接,移动浏览器不幸的是没有通用的标准,许多人都试图模仿他们的非移动浏览器。 如果它不能识别,它也会返回true。 看到这个链接 。

我目前的理解是,只有一个确切的解决scheme来检测浏览器是否为移动设备,然后检测其实际function。 这个解决scheme是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的屏幕尺寸为240×320,显然不正确。

我的公司购买了WURFL许可证,我们完全可以。

问题已经解决,而我添加51Degrees,只需添加51degrees使用Nuget这就是所有。 在这里查看更多https://51degrees.codeplex.com