【问题标题】:Net Core: Type or namespace name 'GlobalFilterCollection' could not be found网络核心:找不到类型或命名空间名称“GlobalFilterCollection”
【发布时间】:2019-03-25 18:29:51
【问题描述】:

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

    为此,您需要在项目中明确添加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));
    });
    

    【讨论】:

    • 那么 GlobalCollectionFilter 的等价物是什么?你写它是为了授权策略
    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 2011-05-13
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2017-11-29
    相关资源
    最近更新 更多