热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用DbContext接口注册AspNetCore2.1身份系统

如何解决《使用DbContext接口注册AspNetCore2.1身份系统》经验,为你挑选了1个好方法。

我正在研究AspNetCore 2.1 WebApi。我使用Microsoft.Extensions.DependencyInjectionAspNetCore.IdentityEntityFrameworkCore

在我的DI注册中,我打电话给:

services.AddDbContext();

好吧 通过合同。但后来我打了一个异常的Identity Manager类(UserManagerRoleManager,等)不能在依赖注入容器respolved,因为他们使用的标识存储(UserStoreRoleStore,等)无法解析其DI参数(MyDbContext)。

设置身份时,所有这些都指向此行:

builder.AddEntityFrameworkStores();

...之所以如此,是因为身份存储正在寻找具体的上下文,并且未在DI中注册。扩展期望class它可以解析为DbContext-并且我不能在接口中添加隐式运算符IMyDbContext以为其提供DI扩展方法可以使用的隐式转换。

所有这些使我执行了相当难看的DI注册:

services
        .AddDbContext()
        .AddDbContext();

DI注册可能会导致我尚未遇到的其他下游问题(线程安全,事务性)。

我的猜测是,我可以通过滚动自己的IServiceCollection扩展名和/或自定义身份存储来清理DI注册-这在这里似乎实在是太过分了,因为否则我无需超出默认的内置身份存储。

我也不是很想删除上下文注册,因为这会滴加到我所有的构造函数注入中,这似乎是错误的

是否有人已经解决了这个问题并找到了解决方法?还是至少有人可以确认/否认DI中的双重(界面&&具体)上下文注册不会引起其他问题?

提前致谢!



1> Kirk Larkin..:

默认情况下,当您调用时AddDbContext,您将注册一个作用域 DbContext实例。这意味着在处理单个请求的任何地方,DbContext通过DI进行请求都会给您相同的实例。使用双重注册后,DI系统将根据您要输入还是给出不同的实例IMyDbContextMyDbContext

要指示DI系统为您提供两种类型的相同实例,请使用以下方法:

services.AddDbContext();
services.AddScoped(sp => sp.GetRequiredService());

第一个调用注册MyDbContext,第二个简单地转发对IMyDbContext相同作用域MyDbContext实例的请求。


推荐阅读
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 标题: ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • java ssm框架_Java SSM框架的简单搭建
    1.添加依赖包,可以通过properties统一框架版本UTF-81.71.75.0.8.RELEASEjunitjunit4.11testjavax.servlet ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
author-avatar
_子竹_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有