【问题标题】:.net application picking up all instances of chrome as mobile.net 应用程序将所有 chrome 实例作为移动设备
【发布时间】:2014-06-12 22:30:34
【问题描述】:

我有一个同时包含移动网页和传统网页的 .net 应用程序。对于我使用 wurfl 的设备检测,问题不在于将什么 chrome 检测为移动设备。我尝试使用所有可用版本的 wurlf,以及使用网络浏览器补丁。无论登录什么电脑,我的日志都会显示以下内容。任何帮助或经验将不胜感激

Client Browser Information:
UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
IsMobileDevice: True
MobileDeviceManufacturer: Asus
MobileDeviceModel: Transformer Pad TF300T
Browser: Chrome
MajorVersion: 35
MinorVersion: 0
Id: chrome
InputType: keyboard
Platform: Android
EcmaScriptVersion: 3.0

【问题讨论】:

  • IsMobileDevice 的值是由 .net 库 Request.Browser.IsMobileDevice 属性设置的,还是由 wurfl 功能设置的?
  • 这是由 .net 库中的 Client.isMobileDevice 建立的
  • 我对 Client.isMobileDevice 不熟悉,你能告诉我来自哪个 .net 库吗?它看起来不像 wurfl 方法/属性。
  • 类引用 Browser 作为 System.Web.HttpBrowserCapabilities 然后我们使用 request.browser.ismobiledevice
  • 您的网络应用程序是 mvc 应用程序还是网络表单?

标签: android .net mobile browser-detection wurfl


【解决方案1】:

request.browser.isMobileDevice 位于 wurfl 之外,不会受到是否包含 wurfl 的影响。除非您明确地用 wurfl 值覆盖该值,这听起来不像您的描述。

使用 wurfl api 的文档非常好,可以在这里找到

http://wurfl.sourceforge.net/dotnet_index.php

它显示了如何设置 WurflManager 以及如何根据基于您传入的用户代理的设备对象检查“功能”,如 is_mobile。设置后,如果它特别是此调用将返回是否移动

device.GetVirtualCapability("is_mobile")

对于默认的 Chrome 桌面浏览器,您的用户代理看起来是正确的,所以这应该不是问题。

设置 MVC 站点,以便能够使用 .Mobile 扩展名路由到单独的移动视图。你会在 Global.asax 中设置这样的东西

        // Remove default Mobile display mode if previously registered
        var dm = DisplayModeProvider.Instance.Modes
            .FirstOrDefault(x => x.DisplayModeId == DisplayModeProvider.MobileDisplayModeId);
        if (dm != null)
        {
            DisplayModeProvider.Instance.Modes.Remove(dm);
        }

        var configurer = new ApplicationConfigurer();
        var manager = WURFLManagerBuilder.Build(configurer);

        DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Mobile")
        {
            ContextCondition = Context => manager.GetDeviceForRequest(Context.Request.UserAgent).GetVirtualCapability("is_mobile") == "true"
        });

如果您正在使用其他一些技术堆栈,或者在 MVC 中没有以这种方式路由视图,那么本文将详细介绍这些用例中的大部分。

http://www.asp.net/whitepapers/add-mobile-pages-to-your-aspnet-web-forms-mvc-application

您仍然希望创建 WurflManager,并检查与上述相同的功能,但您将在通常检查 IsMobileDevice 的任何地方这样做。

【讨论】:

    猜你喜欢
    • 2015-12-21
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多