网络核心:找不到类型或名称空间名称“ GlobalFilterCollection”

时间:2019-03-25 05:29:45

标签: c# .net-core asp.net-core-mvc .net-core-2.0

我正在将一个项目从.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)

1 个答案:

答案 0 :(得分:1)

为此,您将明确需要在项目中添加System.Web.Mvc.dll。请按照下列步骤操作:

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

然后导航到安装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));
});