[英]Use .Net Standard library in .Net Framework 4.7 application
我有一組使用.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)開發的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));
}
}
顯然,我不想在.Net Standard類庫中添加對System.Web
引用,另一方面,我也不知道如何解決此問題!
第二個問題是可以在哪里調用我的services.MyCustomConfigure()
方法。 在.Net Core應用程序中,我在Startup
類的ConfigureServices
方法內調用了此方法,但我不知道如何在ASP.Net MVC
調用此方法!
public class Startup { //...Code cropped for the case of simplicity public void ConfigureServices(IServiceCollection services) { services.MyCustomConfigure() } }
ASP.NET(WebForms,MVC,WebAPI)和ASP.NET Core是不同的框架,盡管它們共享相似的概念(如過濾器屬性),但它們是不同的,並且您不能使用通過其API為ASP.NET Core編寫的組件Microsoft.AspNetCore.*
),用於經典ASP.NET。
這意味着您將需要針對ASP.NET Core和ASP.NET MVC 5具有不同的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.