autofac

Using Autofac with ASP.Net Core 3.1 generic host “Worker Service” application

两盒软妹~` 提交于 2020-08-25 04:19:08
问题 In an ASP.Net Core application, its easy to configure Autofac using: public class Program { public static void Main(string[] args) { // ASP.NET Core 3.0+: // The UseServiceProviderFactory call attaches the // Autofac provider to the generic hosting mechanism. var host = Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureWebHostDefaults(webHostBuilder => { webHostBuilder .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration()

全面理解 ASP.NET Core 依赖注入

筅森魡賤 提交于 2020-08-15 21:44:17
原文: 全面理解 ASP.NET Core 依赖注入 DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚。另外再介绍一下.NET Core的DI实现以及对实例生命周期的管理(这个是经常面试会问到的问题)。最后再给大家简单介绍一下在控制台以及Mvc下如何使用DI,以及如何把默认的Service Container 替换成Autofac。 我录了一些关于ASP.NET Core的入门视频:有兴趣的同学可以去看看。 http://www.cnblogs.com/jesse2013/p/aspnetcore-videos.html 一、什么是依赖注入 1.1 依赖 1.2 什么注入 为什么反转 何为容器 二、.NET Core DI 2.1 实例的注册 2.2 实例生命周期之单例 2.3 实例生命周期之Tranisent 2.4 实例生命周期之Scoped 三、DI在ASP.NET Core中的应用 3.1 在Startup类中初始化 3.2 Controller中使用 3.3 View中使用 3.4 通过HttpContext来获取 四、如何替换其它的Ioc容器 一、什么是依赖 注入(Denpendency Injection) 这也是个老身常谈的问题,到底依赖注入是什么? 为什么要用它?

ASP.NET Core 使用 AutoFac 注入 DbContext

偶尔善良 提交于 2020-08-15 08:56:02
原文: ASP.NET Core 使用 AutoFac 注入 DbContext DI 1.0 —— 通过 RegisterInstance 注入 一开始,并不是很懂 AutoFac 的用法,又因为要使用特定的构造器和参数来初始化 DbContext ,所以我想到的办法就是使用 RegisterInstance ,代码如下: var optionsBuilder = new DbContextOptionsBuilder<BookListDbContext>(); optionsBuilder.UseMySql(connectionString, b => b.MigrationsAssembly( "BookList.Domain" )); // SingleInstance 就是单例模式,现在想起来当时写的好智障 containerBuilder.RegisterInstance( new BookListDbContext(optionsBuilder.Options)).SingleInstance(); 一开始在本地用 Swagger 一个一个的调试 api 的感觉还很好,没啥问题,后来前端同学把 js 加上,就会经常的出现 404。经过 debug 发现,是 DbContext 出现了冲突,多个请求同时访问同一个 DbContext 对象,造成异常

从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之十二Swagger(参数)使用二

我与影子孤独终老i 提交于 2020-08-15 07:27:10
   引言   在 上一篇 中提到了 Swagger 的基本使用,仅限于没有参数,没有验证的那种api文档生成,那么这篇就连接上篇继续,在一般具有安全性、权限等验证的接口上,   都会在header/url中加上请求者的秘钥、签名等,当然也有可能添加到body等其它地方, Swashbuckle.AspNetCore 都支持这些写法。    如何使用 -- 下面将介绍两种使用方式 两种方式参数设置到何处都是在 In 属性 上,属性对于值如下: 参考 https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameter-object query: 参数字段值对应放在url中 header: 参数值对应放在header param中 body: 参数对应放到请求体中 path: 参数应该对应放到请求路径 // 具体貌似没用 formData: 参数对应放到请求表单中    第一种:将一个或多个参数保护API的“securityDefinitions”添加到生成的Swagger中。 这种是直接在文档的右上方添加一个 Authorize 按钮,设置了值后,每一个请求都会在设置的位置上加上相应的值,在 上一篇随笔中的 ConfigureServices 方法中, 对应位置 services

从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之十一 || AOP自定义筛选,Redis入门 11.1

只谈情不闲聊 提交于 2020-08-15 05:42:11
本文3.0版本文章 https://mp.weixin.qq.com/s/pjvleNGi_AazZ7COdxQyPQ Redis 部分的内容,和netcore2.0一样,不需要更新。 代码已上传Github+Gitee,文末有地址   书说上文《 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存 》,昨天咱们说到了AOP面向切面编程,简单的举出了两个栗子,不知道大家有什么想法呢,不知道是否与传统的缓存的使用有做对比了么?   传统的缓存是在Controller中,将获取到的数据手动处理,然后当另一个controller中又使用的时候,还是Get,Set相关操作,当然如果小项目,有两三个缓存还好,如果是特别多的接口调用,面向Service服务层还是很有必要的,不需要额外写多余代码,只需要正常调取Service层的接口就行,AOP结合Autofac注入,会自动的查找,然后返回数据,不继续往下走Repository仓储了。   昨天我发布文章后,有一个网友提出了一个问题,他想的很好,就是如果面向到了Service层,那BaseService中的CURD等基本方法都被注入了,这样会造成太多的代理类,不仅没有必要,甚至还有问题,比如把Update也缓存了

从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之十一 || AOP自定义筛选,Redis入门 11.1

让人想犯罪 __ 提交于 2020-08-14 08:12:08
本文3.0版本文章 https://mp.weixin.qq.com/s/pjvleNGi_AazZ7COdxQyPQ Redis 部分的内容,和netcore2.0一样,不需要更新。 代码已上传Github+Gitee,文末有地址   书说上文《 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存 》,昨天咱们说到了AOP面向切面编程,简单的举出了两个栗子,不知道大家有什么想法呢,不知道是否与传统的缓存的使用有做对比了么?   传统的缓存是在Controller中,将获取到的数据手动处理,然后当另一个controller中又使用的时候,还是Get,Set相关操作,当然如果小项目,有两三个缓存还好,如果是特别多的接口调用,面向Service服务层还是很有必要的,不需要额外写多余代码,只需要正常调取Service层的接口就行,AOP结合Autofac注入,会自动的查找,然后返回数据,不继续往下走Repository仓储了。   昨天我发布文章后,有一个网友提出了一个问题,他想的很好,就是如果面向到了Service层,那BaseService中的CURD等基本方法都被注入了,这样会造成太多的代理类,不仅没有必要,甚至还有问题,比如把Update也缓存了

ASP.Net Core 3.1 With Autofac ConfigureServices returning an System.IServiceProvider isn&apos;t suppor...

人盡茶涼 提交于 2020-08-13 17:25:55
ASP.Net Core 3.1 With Autofac ConfigureServices returning an System.IServiceProvider isn't supported. 前言 Autofac在ASP.Net Core3.0以后,集成方式有所调整。在ASP.Net Core2中我们一般是把 Startup 的 ConfigureServices 方法返回值类型改为 IServiceProvider 。我们可以先看一下部分代码: public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc(); //xxxxxx你的其他代码 省略........... //用Autofac来替换IOC容器 返回值由 void 修改为 IServiceProvider var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterModule<CustomAutofacModule>(); containerBuilder.Populate(services); var container = containerBuilder.Build(); //将当前的容器保存起来

基于 abp vNext 和 .NET Core 开发博客项目

别说谁变了你拦得住时间么 提交于 2020-08-13 08:32:43
上一篇文章( https://www.cnblogs.com/meowv/p/12896177.html )已经成功创建了博客项目,但是abp默认给我们引用了许多项目中用不到的组件。 本篇文章将给项目进行瘦身,删掉对我们来说暂时用不到的组件。讲解各个模块之间的关系,写一个Hello World,让其成功运行起来。 给项目瘦身 Meowv.Blog.HttpApi.Hosting Meowv.Blog.HttpApi.Hosting 相当于一个web项目,但这里主要依赖于 Meowv.Blog.HttpApi 模块,用来暴露我们的API的。 删掉 Meowv.Blog.HttpApi.Hosting 项目中abp自己生成的文件和文件夹,只留下 Program.cs 和 Startup.cs 两个类。 在abp中,每个模块都应该定义一个模块类,派生自 AbpModule ,那么就添加一个模块类 MeowvBlogHttpApiHostingModule.cs AbpModule 类中可以做 配置服务前和后的操作,应用程序初始化,应用程序初始化前和后,应用程序关闭和模块依赖等一系列操作,详看, https://docs.abp.io/en/abp/latest/Module-Development-Basics 为了方便,在这里直接集成Autofac,来替换官方依赖注入,详看,

ASP.NET Core策略授权和 ABP 授权

拟墨画扇 提交于 2020-08-13 03:14:09
目录 ASP.NET Core 中的策略授权 策略 定义一个 Controller 设定权限 定义策略 存储用户信息 标记访问权限 认证:Token 凭据 颁发登录凭据 自定义授权 IAuthorizationService ABP 授权 创建 ABP 应用 定义权限 Github 仓库源码地址 https://github.com/whuanles/2020-07-12 ASP.NET Core 中的策略授权 首先我们来创建一个 WebAPI 应用。 然后引入 Microsoft.AspNetCore.Authentication.JwtBearer 包。 策略 Startup 类的 ConfigureServices 方法中,添加一个策略的形式如下: services.AddAuthorization(options => { options.AddPolicy("AtLeast21", policy => policy.Requirements.Add(new MinimumAgeRequirement(21))); }); 这里我们分步来说。 services.AddAuthorization 用于添加授权方式,目前只支持 AddPolicy。 ASP.NET Core 中,有基于角色、声明、策略的三种授权形式,都是使用 AddPolicy 来添加授权处理。 其中,有两个

从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之十一 || AOP自定义筛选,Redis入门 11.1

流过昼夜 提交于 2020-08-12 18:18:55
本文3.0版本文章 https://mp.weixin.qq.com/s/pjvleNGi_AazZ7COdxQyPQ Redis 部分的内容,和netcore2.0一样,不需要更新。 代码已上传Github+Gitee,文末有地址   书说上文《 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存 》,昨天咱们说到了AOP面向切面编程,简单的举出了两个栗子,不知道大家有什么想法呢,不知道是否与传统的缓存的使用有做对比了么?   传统的缓存是在Controller中,将获取到的数据手动处理,然后当另一个controller中又使用的时候,还是Get,Set相关操作,当然如果小项目,有两三个缓存还好,如果是特别多的接口调用,面向Service服务层还是很有必要的,不需要额外写多余代码,只需要正常调取Service层的接口就行,AOP结合Autofac注入,会自动的查找,然后返回数据,不继续往下走Repository仓储了。   昨天我发布文章后,有一个网友提出了一个问题,他想的很好,就是如果面向到了Service层,那BaseService中的CURD等基本方法都被注入了,这样会造成太多的代理类,不仅没有必要,甚至还有问题,比如把Update也缓存了