Net Core: тип или имя пространства имен 'GlobalFilterCollection' не найден - PullRequest
0 голосов
/ 25 марта 2019

Я мигрирую проект из .Net 4.6.2 в .Net Core 2.0.Что является заменой для GlobalFilterCollection в Net Core?

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 голосов
/ 25 марта 2019

Для этого вам необходимо явно добавить 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 в своем проекте.

EDIT

В .NET CORE изменился способ регистрации ваших фильтров. Я просто покажу вам небольшой пример того, как вы можете зарегистрировать фильтр.

Согласно официальной документации :

Вы можете зарегистрировать фильтр глобально (для всех контроллеров и действий), добавив его в коллекцию MvcOptions.Filters в методе ConfigureServices класса Startup

Например: если я хочу использовать AuthorizeAttribute, я не могу добавить AuthorizeAttribute в MvcOptions.Filters. Мне нужно создать AuthorizationPolicy и использовать AuthorizeFilter.

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

services.AddMvc(options =>
{
    options.Filters.Add(new AuthorizeFilter(authorizepolicy));
});
...