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