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

C# iPhone iPad在ASP.Net MVC应用程序中未检测到浏览器类型,c#,asp.net,.net,asp.net-mvc-5,safari,C#,Asp.net,.net,Asp.net Mvc 5,Safari,我有一个web应用程序,其中包含很多Widgets/页。当在Safari中打开某些小部件时,我想阻止它们,如果有人试图从Safari浏览器打开webapp,我会显示一些消息。 下面是我写的代码 public class BlockFromSafari : System.Web.Mvc.ActionFilterAttribute { // runs just before the action is executed public override vo

我有一个web应用程序,其中包含很多Widgets/页。当在Safari中打开某些小部件时,我想阻止它们,如果有人试图从Safari浏览器打开webapp,我会显示一些消息。 下面是我写的代码

  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,在Windows PC的Chrome中,页面会很好地打开,就像我在Windows PC的Safari浏览器中打开一样,我会被重定向到“这是Safari内容页面”

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

  • 到目前为止还不错。 现在问题来了

    问题:如果我打开网站并访问相应的URL,在移动设备或Ipad中的Chrome页面仍会显示“这是SAFARI”,理想情况下,我希望与PC中的行为相同。请指导我

    预期行为:

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

    Mobeil Device Safari应显示“这是Safari”


    有趣的阅读

    因此,这篇文章可能会对你有所帮助

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

    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还是iPhone
    }
    否则{
    //还有别的吗
    }
    以下是完整的答案