Net Core:找不到类型或命名空间名称“GlobalFilterCollection”

问题描述 投票:0回答:1

我正在将项目从.Net 4.6.2迁移到.Net Core 2.0。 Net Core中GlobalFilterCollection的替代品是什么?

The type or namespace name 'GlobalFilterCollection' could not be found (are you missing a using directive or an assembly reference?)    HPE.Kruta.Web.Core  


    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
c# .net-core asp.net-core-mvc .net-core-2.0
1个回答
-1
投票

为此,您需要在项目中添加System.Web.Mvc.dll。跟着这些步骤:

在您的项目中,在解决方案资源管理器中的Dependencies下,右键单击并选择Add Reference选项。然后在Reference Manager窗口下,单击Browse。

然后导航安装ASP .NET的位置。它应该在这里:

程序文件(x86) - > Microsoft ASP.NET - > ASP.NET MVC 4.6 - >程序集---> System.Web.Mvc.dll

将此文件包含在项目的程序集中。一旦你包含这个.dll文件,只需导入using System.Web.Mvc;然后你就可以在你的项目中使用GlobalFilterCollection filters

编辑:

在.NET CORE中,注册过滤器的方式已发生变化。我将向您展示一个关于如何注册过滤器的小例子。

根据官方documentation

您可以通过将过滤器添加到Startup类的ConfigureServices方法中的MvcOptions.Filters集合,全局注册过滤器(适用于所有控制器和操作)

例如:如果我想使用AuthorizeAttribute,我不能将AuthorizeAttribute添加到MvcOptions.Filters中。我需要创建一个AuthorizationPolicy并使用AuthorizeFilter

var authorizepolicy= new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .RequireRole("Admin", "SuperUser")
        .Build();

services.AddMvc(options =>
{
    options.Filters.Add(new AuthorizeFilter(authorizepolicy));
});
© www.soinside.com 2019 - 2024. All rights reserved.