2008-08-16 185 views
6

我已经在我的asp.net项目中包含了一个移动web表单,我认为它可以/应该只为我的移动用户看到,但我意识到它也可以从任何浏览器,我没有在那里看到问题,因为我可以使用HttpBrowserCapabilities.IsMobileDevice = true来区分访问,并将其转移到合适的aspx页面,但结果是,当我从我的移动设备访问Web窗体时,它被标识为IsMobileDevice = false并将我发送到另一个页面。移动设备被检测为非移动设备

这怎么可能呢?

移动设备上运行的Pocket PC 2003

回答

2

有些是不被认可,因为用户代理已经搞砸与或正在使用新的浏览器。如Opera Mobile 9.5。为了解决这个问题,你需要创建一个浏览器(* .browser)文件来专门定义这个文件。我必须为从Google发送的新的基于Mozilla的UserAgent执行此操作。

4

恕我直言:值HttpContext.Current.Request.Headers("User-Agent")是一个更安全的赌注,因为它实际上表明浏览器正在提出请求,而不是设备类型本身

我从经验中了解到,如果智能手机通过第三方浏览器向您的服务提出请求,通常不是任何类型的“您是什么类型的设备”测试(HttpCapabilitiesBase.IsMobileDevice和/或HttpContext.Current.Request.Browser.IsMobileDevice)将失败。

不幸的是,尽管没有一个允许的用户代理(或者不允许的用户代理)的大名单,但在渲染之前,您只需确保它不是以Mozilla,iPhone或Opera开头的该页...

这是一个难以发挥的舞台。
祝你好运。

1

我认为你应该使用比Microsoft Browser Capabilities更好的其他DDR。我使用的是http://wurfl.sourceforge.net> WURFL,它是开源的,也许它更加扩展和更新。还有其他商业DDR,如DeviceAtlas

有很多.net库,但我使用Marg.Wurfl。它允许使用wurfl功能呈现Web移动页面。