检测到移动设备为非移动设备

时间:2020-03-05 18:40:04  来源:igfitidea点击:

我在asp.net项目中加入了一个移动Web表单,我认为可以/应该只为我的移动用户看到它,但是我意识到也可以在任何浏览器中看到它,但我看不到其中的原因我可以使用HttpBrowserCapabilities.IsMobileDevice = true区分访问权限,然后转移到适当的aspx页面,但是结果是,当我从移动设备访问Web表单时,它被标识为IsMobileDevice = false并将我发送到另一页面。

怎么可能呢?

该移动设备运行Pocket PC 2003.

解决方案

回答

由于UserAgent已被弄乱或者正在使用新的浏览器,因此无法识别其中的一些。例如Opera Mobile 9.5. 要解决此问题,我们需要创建专门用于定义此内容的浏览器(* .browser)文件。我必须对从Google发送来的基于Mozilla的新UserAgent进行操作。

回答

恕我直言:HttpContext.Current.Request.Headers(" User-Agent")`的值是一个更安全的选择,因为它实际上指示正在发出请求的浏览器,而不是设备本身的类型。

我从经验中学到,如果智能手机通过第三方浏览器向服务发出请求,则通常会测试"我们正在使用哪种类型的设备"(HttpCapabilitiesBase.IsMobileDevice和/ orHttpContext.Current.Request.Browser.IsMobileDevice)将失败。

但是遗憾的是,由于缺少大量允许的用户代理(或者与此相关的不允许的用户代理),我们仅需确保在呈现页面之前,它不以Mozilla,iPhone或者Opera开头。 。

这是一个很难玩的竞技场。
祝你好运。

回答

我认为我们应该比Microsoft浏览器功能更好地使用其他DDR。我使用的是http://wurfl.sourceforge.net> WURFL,它是开源的,也许还会扩展和更新。还有其他商用DDR,例如DeviceAtlas。

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