【问题标题】:Mobile device is detected as non mobile device移动设备被检测为非移动设备
【发布时间】:2010-09-06 00:10:50
【问题描述】:
我在我的 asp.net 项目中包含了一个移动 Web 表单,我认为它可以/应该只为我的移动用户看到,但我意识到它也可以从任何浏览器中看到,我看不到那里的问题导致我可以使用 HttpBrowserCapabilities.IsMobileDevice=true 区分访问并转移到适当的 aspx 页面,但结果是当我从移动设备访问 Web 表单时,它被识别为 IsMobileDevice = false 并将我发送到另一个页面.
这怎么可能?
移动设备运行的是 Pocket PC 2003。
【问题讨论】:
标签:
asp.net
mobile
mobile-website
【解决方案1】:
恕我直言:HttpContext.Current.Request.Headers("User-Agent") 的值更安全,因为它实际上指示发出请求的浏览器,而不是设备类型per-se。
我从经验中了解到,如果智能手机通过第三方浏览器向您的服务发出请求,则通常不会有任何类型的“您是什么类型的设备”测试 (HttpCapabilitiesBase.IsMobileDevice和/或HttpContext.Current.Request.Browser.IsMobileDevice) 将失败。
不幸的是,由于缺少大量允许的用户代理(或不允许的用户代理),您只需要在渲染之前确保它不以 Mozilla、iPhone 或 Opera 开头页面...
这是一个很难玩的竞技场。
祝你好运。
【解决方案2】:
有些无法识别,因为 UserAgent 被弄乱了或正在使用新的浏览器。比如Opera Mobile 9.5。要解决这个问题,您需要创建一个专门用于定义它的浏览器 (*.browser) 文件。我必须为从 Google 发送的新的基于 Mozilla 的 UserAgent 做这件事。
【解决方案3】:
我认为您应该使用比 Microsoft 浏览器功能更好的其他 DDR。我正在使用 http://wurfl.sourceforge.net>WURFL,它是开源的,也许它得到了更多的扩展和更新。还有其他商业 DDR,例如 DeviceAtlas。
有很多 .net 库,但我使用的是 Marg.Wurfl。它允许使用 wurfl 功能呈现网页移动页面。