C# 有没有办法检查RouteConfig.cs文件中的浏览器名称?

C# 有没有办法检查RouteConfig.cs文件中的浏览器名称?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我试图在RouteConfig.cs文件中检查浏览器,但它显示的错误并没有从浏览器获取请求 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); string browser = HttpContext.Current.Request.Browser.Browser; if (browser == "Chro

我试图在RouteConfig.cs文件中检查浏览器,但它显示的错误并没有从浏览器获取请求

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    string browser = HttpContext.Current.Request.Browser.Browser;
    if (browser == "Chrome" || browser == "Firefox")
    {
        routes.MapRoute(name: "Default",
                        url: "{controller}/{action}/{id}",
                        defaults: new
                                  {
                                      controller = "Login",
                                      action = "Index",
                                      id = UrlParameter.Optional
                                  });
    }              
}

我的目标是只从chrome和firefox访问应用程序,所以我尝试在RouteConfig中检查它,以便在条件不满足时重新路由到另一个视图。但它不起作用,因此我已使用Global.asax进行了检查,但路由在那里不起作用。

您无法在启动时检查浏览器,因为启动与请求无关,因此没有浏览器在那里检查


最好的选择是在动作或控制器本身中检查浏览器是什么。不过,我会谨慎地将特定浏览器排除在访问您的站点之外,因为您现在似乎正在尝试。对于浏览器检查,一个好的选择是配置一个中间件类,您可以使用该类检查每个http请求,并可能指定重定向或响应。这是一种将此逻辑全部包含在一个位置的合适方法,因此您不需要跨控制器或操作进行复制,并且非常容易设置。网上有很多文章。

是的,现在我只想这样做,我已经用Global.asax文件检查过了,但我无法覆盖RouteConfig路由。有什么方法可以做到这一点吗?正如我在回答中所描述的:没有。你想在这里实现什么目标?(功能上)@KristófTóth我已编辑了我的问题,请选择是,正如@Patrick所说,处理特定请求与启动应用程序无关。您必须在控制器中执行此操作,例如,如果一个请求包含指示它不是来自ffox或chrome返回http 404或500或您可以在控制器中使用的任何内容,例如
currentRequest.Headers.UserAgent