У меня есть набор библиотек классов, которые разработаны с использованием .Net Standard 2.0. Одна из этих библиотек классов реализует интерфейс IAuthorizationFilter
, который находится в пространстве имен Microsoft.AspNetCore.Mvc.Filters
.
public class AuthorizationFilter : IAuthorizationFilter
{
public AuthorizationFilter() {}
public void OnAuthorization(AuthorizationFilterContext context)
{/*Code cropped for the case of simplicity*/}
}
Основная обязанность другой библиотеки классов - зарегистрировать конфигурацию внедрения зависимостей.
public static class ServiceCollectionExtensions
{
public static IServiceCollection MyCustomConfigure(this IServiceCollection services)
{
//...Code cropped for the case of simplicity
services.AddMvc(config => { config.Filters.Add(typeof(AuthorizationFilter)); });
return services;
}
}
Помимо этих библиотек классов .Net Standard, у меня есть проект веб-приложения, разработанный с использованием ASP.Net MVC
(.Net Framework 4.7)
У меня есть две основные проблемы:
- Мне нужно добавить свой класс
FilterAttribute
в список фильтров ASP.Net MVC's
, который выдает исключение:
Данный экземпляр фильтра должен реализовывать одно или несколько из следующих
интерфейсы фильтров: System.Web.Mvc.IAuthorizationFilter,
System.Web.Mvc.IActionFilter, System.Web.Mvc.IResultFilter,
System.Web.Mvc.IExceptionFilter,
System.Web.Mvc.Filters.IAuthenticationFilter.
Я зарегистрировал фильтр таким образом в своем приложении ASP.Net MVC:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//...Code cropped for the case of simplicity
filters.Add(typeof(AuthorizationFilter));
}
}
очевидно, я не хочу добавлять ссылку на System.Web
в мои библиотеки классов .Net Standard, с другой стороны, я не знаю, как решить эту проблему!
Вторая проблема - это место, где я могу вызвать мой services.MyCustomConfigure()
метод. В приложениях .Net Core я вызывал этот метод внутри ConfigureServices
метода в Startup
классе, но я не знаю, как вызвать его в ASP.Net MVC
!
public class Startup
{
//...Code cropped for the case of simplicity
public void ConfigureServices(IServiceCollection services)
{
services.MyCustomConfigure()
}
}