iPhone iPad 未检测到 ASP.Net MVC 应用程序中的浏览器类型

Posted

技术标签:

【中文标题】iPhone iPad 未检测到 ASP.Net MVC 应用程序中的浏览器类型【英文标题】:iPhone iPad Not detecting the browser type in ASP.Net MVC app 【发布时间】:2018-07-20 14:38:23 【问题描述】:

我有一个 Web 应用程序,其中有很多 widgests/page。某些小部件在 Safari 中打开时我想阻止,并在有人尝试从 Safari 浏览器打开 web 应用程序时显示某种消息。 下面是我写的代码。

  public class BlockFromSafari : System.Web.Mvc.ActionFilterAttribute
    
        // runs just before the action is executed
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        
            var browserType = filterContext.HttpContext.Request.Browser.Browser;
            base.OnActionExecuting(filterContext);
            if (browserType.Contains("Safari"))
            
                // Redirect the user accordingly
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary   "controller", "Security" ,  "action", "Safari"  );
            
        
    

请注意,我已将此过滤器应用于我想要的所有操作方法

  public ActionResult Safari()
  
            return Content("This is SAFARI!!");
  

当前行为:

    如果我打开网站并访问相应的 URL,在 WindowsPC 中的 Chrome 页面打开正常,就像我在 Windows PC 的 Safari 浏览器中打开一样,我会重定向到“这是SAFARI 内容页面”。

    如果我打开网站并访问相应的 URL,则在 Mac PC 中的 Chrome 页面打开正常,就像我在 Mac PC 中的 Safari 浏览器中打开一样,我会被重定向到“这是 SAFARI 内容页面”

到目前为止一切顺利。 现在问题来了

问题:如果我打开网站并访问相应的 URL,在 Mobile deviceIpadChrome 页面中仍然显示“This is SAFARI” 理想情况下,我期望与 PC 中的行为相同。请指导我。

预期行为:

移动设备-Chrome - 应该可以正常打开

Mobeil Devive-Safari - 应该显示“这是 SAFARI”

有趣的阅读 Chrome Treated as Safari

【问题讨论】:

【参考方案1】:

所以穿,这篇文章可能会对你有所帮助 https://51degrees.com/blog/mobile-and-tablet-device-detection-with-mvc5

    主要思想是从标题中获取浏览器信息,例如:

    requestContext.HttpContext.Request.Headers.Profiles.SelectMany(p => p.Values).ToArray();

因此,如果它是移动的,您可以添加另一个条件。

    另一种方法是使用 javascript 并在其移动设备上重定向,例如:

    var userAgent = window.navigator.userAgent; if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) // iPad or iPhone else // Anything else 这是完整的答案(Determine if user navigated from mobile Safari)

【讨论】:

以上是关于iPhone iPad 未检测到 ASP.Net MVC 应用程序中的浏览器类型的主要内容,如果未能解决你的问题,请参考以下文章

xcode4.3 未检测到 iPad 2

ASP.NET Core 5 授权策略未检测到声明

Ipad上传的图像在asp.net c#中的所有浏览器中显示桌面旋转90度

检测应用程序是不是安装在 iPad 或 iPhone 上(iOS 6 到 iOS 7)

如何检测打开蓝牙的 Iphone/Ipad 设备?

如何检测我的 iPhone 应用程序正在 iPad 上运行