簡體   English   中英

在.Net Framework 4.7應用程序中使用.Net標准庫

[英]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應用程序項目。

我這里有兩個主要問題:

  1. 我需要將我的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引用,另一方面,我也不知道如何解決此問題!

  1. 第二個問題是可以在哪里調用我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM