netcore2.2升级到3.1依赖注入插件切换

问题描述:原来在2.2版本中使用autofac作为注入时的管理容器,现在要升级到3.1版本,遇到了很多的问题,各种解析不了。。。

解决方案:最后因为水平太low就放弃了,改用微软自带的容器管理,改造过程中也遇到了一些问题

1、注册顺序需要注意,尤其是有依赖关系的;还有就是注册类型,静态的不能引用会话的,说的有点含糊了。。。

2、过滤器中属性注入,之前是使用的静态类,直接解析就ok,现在要变成构造方法中注入,控制器调用时莫非要把参数都带上?不用的,这个时候需要使用ServiceFilter

        [ServiceFilter(typeof(HandlerAuthorizeAttribute))]
        public ActionResult Index()
        {
            return View();
        }

Startup类中主要修改方法如下

 public void ConfigureServices(IServiceCollection services)
        {
            //Redis服务帮助类(单例)
            services.AddSingleton<RedisHelper>();
            //使用Redis缓存
            services.AddSingleton<ICacheContext, CacheContextByRedis>();
            services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
            //注册基础服务
            services.AddScoped(typeof(IRepository<>), typeof(BaseRepository<>));
            services.AddScoped<IUnitWork, UnitWork>();
            services.AddScoped<IAuth, LocalAuth>();
            services.AddScoped<LoginParse>();
            services.AddSingleton<VerifyCode>();

            //注册App(注意引用顺序)
            services.AddScoped<SysLogApp>();
            services.AddScoped<CreateStaticApp>();
            services.AddScoped<NewsClassApp>();
            services.AddScoped<NewsDetailApp>();
            services.AddScoped<FriendshipLinkApp>();
            services.AddScoped<ScrollPicApp>();
            services.AddScoped<SysModuleApp>();
            services.AddScoped<SysModuleButtonApp>();
            services.AddScoped<SysRoleAuthorizeApp>();
            services.AddScoped<SysRoleApp>();
            services.AddScoped<SysUserApp>();

            //注册过滤器
            services.AddScoped<HandlerAuthorizeAttribute>();
            services.AddScoped<HandlerLoginAttribute>();
            services.AddScoped<HandlerLoginForAppAttribute>();

            services.AddMvc(opt => {
                opt.Filters.Add<HandlerExceptionAttribute>();
            });
            services.AddMemoryCache();
            services.AddOptions();
            services.Configure<AppSetting>(Configuration.GetSection("AppSettings"));
            services.AddDbContext<XXXDBContext>(options =>
                options.UseMySql(Configuration.GetConnectionString("MySQL")));
        }

原文地址:https://www.cnblogs.com/wangbg/p/12237202.html

时间: 2024-10-09 15:53:41

netcore2.2升级到3.1依赖注入插件切换的相关文章

C#集合篇,在业务背景下(***产品升级管理):依赖注入,变量声明,三元表达式,常用字符串相关操作方法,ADO.NET,EF机制,T4模板自动生成实体类,ref变量巧用,属性实际运用,唯一性验证

QQ:1187362408 欢迎技术交流和学习 关于系统产品升级报告管理,业务需求: TODO: 1,升级报告管理:依据各县区制定升级报告(关联sAreaCode,给每个地区观看具体升级报告信息) 2,运用的技术:依赖注入,变量声明,三元表达式,常用字符串相关操作方法,ADO.NET,EF机制,T4模板自动生成实体类,ref变量与可null变量巧用,属性实际运用,唯一性验证,url传递中文编码和解码问题 讲解篇:1,服务端aspx,2,服务端后台返回数据(这里采用服务器端程序:aspx.cs)

Android开发中依赖注入的应用

什么是依赖注入? 依赖是指一个对象持有其他对象的引用.依赖注入则是将这些依赖对象传递给被依赖对象,而不是被依赖对象自己创建这些对象. public class MyClass{ private AnotherClass mAnotherObject; public MyClass(){ mAnotherObject = new AnotherClass(); } } 通过传递对象的方式,所传递对象的更改不会影响代码. public class MyClass{ private MyInterfa

.netCore2.0 程序集DI依赖注入

传统的依赖注入确实简单,但是随着项目的扩展随之而来的问题又来了,因为传统的注入是单个类和接口注入的,加入项目的接口和类增加到了上百个的话,就需要在Startup.cs中复制注入上百次,虽然能解决问题,但是显然有点笨拙. 下面介绍一个程序集DI依赖注入,即通过反射进行文件注入 首先通过反射获取当前程序集 /// <summary> /// 通过程序集的名称加载程序集 /// </summary> /// <param name="assemblyName"&

ASP.NET Web API中的依赖注入

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 什么是依赖注入 依赖,就是一个对象需要的另一个对象,比如说,这是我们通常定义的一个用来处理数据访问的存储,让我们用一个例子来解释,首先,定义一个领域模型如下: namespace Pattern.DI.MVC.Models{ public cl

ASPNET5 依赖注入(Dependency Injection)

依赖注入一直是asp.net web框架(Web API,SignalR and MVC)中不可或缺的一部分,但是在以前,这个框架都是各自升级,都有各自的依赖注入实现方式,即使Katana项目想通过Owin将这些项目连接起来,你还是要做统一的容器去支持它们,现在事情有所变化了. 抽象 asp.net团队决定提供依赖注入功能通过提炼最流行的IOC容器中最核心的功能,然后让不同的组件实现这些接口来实现依赖注入. IServiceProvider 这个最主要的接口,开发都可以通过这个接口去检索Ioc容

angular_ui-router ——依赖注入

Angularjs ui-router - 组件: $state / $stateProvider:管理状态定义.当前状态和状态转换.包含触发状态转换的事件和回调函数,异步解决目标状态的任何依赖项,更新$location到当前状态.由于状态包含关联的 url,通过$urlRouterProvider生成一个路由规则来执行转换的状态. ui-view指示器:渲染状态中定义的视图,是状态中定义的视图的一个占位符. $urlRouter / $urlRouterProvider:管理了一套路由规则列表

Angular2 依赖注入

1. 使用DI 依赖注入是一个很重要的程序设计模式. Angular 有自己的依赖注入框架,离开了它,我们几乎没法构建 Angular 应用.它使用得非常广泛,以至于几乎每个人都会把它简称为 DI. 我们来看一个简单的例子: export class Animal { dogs; constructor() { var dog = new Dog(); } } 我们的Animal在构造函数中手工创建所需的每样东西.问题在于,我们这个 Animal类过于脆弱.缺乏弹性并且难以测试. 当我们的Ani

.Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整-控制反转和依赖注入的使用

再次调整项目架构是因为和群友dezhou的一次聊天,我原来的想法是项目尽量做简单点别搞太复杂了,仅使用了DbContext的注入,其他的也没有写接口耦合度很高.和dezhou聊过之后我仔细考虑了一下,还是解耦吧,本来按照软件设计模式就应该是高内聚低耦合的,低耦合使项目的模块独立于其他模块,增加了可维护性和移植性! 注:前面写的博客详细记录没项目操作的每一步,其实写起博客来很费时间,而且整片博文里很多无用的信息.对MVC来说会添加控制器,添加视图,添加类这些都最基本的要求了,并且前面博文里都写了,

照虎画猫写自己的Spring——依赖注入

前言 上篇<照虎画猫写自己的Spring>从无到有讲述并实现了下面几点 声明配置文件,用于声明需要加载使用的类 加载配置文件,读取配置文件 解析配置文件,需要将配置文件中声明的标签转换为Fairy能够识别的类 初始化类,提供配置文件中声明的类的实例 一句话概括:不借助Spring容器,实现了Bean的加载和实例化 要想契合Fairy取名时的初衷(东西不大,但是能量无穷),只有一套加载Bean的机制是远远不够的,所以还是需要照虎画猫,完善这个小精灵. Spring之所以在Java企业级开发的众多