所有 .Net Core 项目页面上的 Internet Explorer 重定向

The*_*ker 3 c# asp.net-core-mvc

我是 .Net Core 初学者,正在寻找一种解决方案来保护应用程序免受 IE 的影响。

我在控制器中得到了以下代码:

string userAgent = Request.Headers["User-Agent"].ToString();
var flagsIE = new [] {"MSIE", "Trident"};

if(flagsIE.Any(userAgent.Contains)){
    return RedirectToAction("BadBrowser");
}
Run Code Online (Sandbox Code Playgroud)

现在,如果有人尝试使用 IE 访问该页面,他们会被重定向到一个信息页面,要求他们使用现代浏览器。我不想将此代码添加到每个 Controller.cs 中,而是想将其添加到项目级别,以便它独立于项目内的位置执行。

而且,我知道这可以通过 _Layout.cshtml 来实现,我的问题是:在哪里以及如何实现一个函数,以便为项目中的所有请求的视图执行该函数,而无需在控制器中添加每个请求。

先感谢您。

The*_*ker 6

正如 Icepickle 所建议的,在我的问题的评论中,我使用了中间件Startup.cs并得到了所需的结果:

        app.Use(async (context,next) =>
            {
                string userAgent = context.Request.Headers["User-Agent"].ToString();
                var IEkeywords = new [] {"MSIE", "Trident"};

                if (IEkeywords.Any(userAgent.Contains)){
                    context.Response.Redirect("/IE/redirect/badbrowser.html");
                    return;
                }

                await next();
            });
Run Code Online (Sandbox Code Playgroud)