我有一组使用 .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 标准类库,我还有一个使用ASP.Net MVC
(.Net Framework 4.7)开发的 Web 应用程序项目
我这里有两个主要问题:
- 我需要将我的
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 标准类库中添加对的引用,另一方面,我不知道如何解决这个问题!
第二个问题是我可以调用我的
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() } }