Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.Net Core 1.0.0、多个项目和IConfiguration_Configuration_Asp.net Core - Fatal编程技术网

.Net Core 1.0.0、多个项目和IConfiguration

.Net Core 1.0.0、多个项目和IConfiguration,configuration,asp.net-core,Configuration,Asp.net Core,TL;灾难恢复版本: 使用单个appsettings.json文件中的so值可以在解决方案中的多个项目中使用的最佳方法是什么?此外,我需要能够在不使用构造函数注入的情况下访问这些值(解释如下) 长版本: 简单地说,我们有一个包含3个项目的解决方案: 数据:负责设置ApplicationDbContext,生成迁移 服务:具有一些业务逻辑的类库 WebApi:restapi和Startup.cs 在这种体系结构中,我们必须解决核心1.0.0中仍然存在的“添加迁移”问题。此解决方案的一部分意味着我们

TL;灾难恢复版本:

使用单个appsettings.json文件中的so值可以在解决方案中的多个项目中使用的最佳方法是什么?此外,我需要能够在不使用构造函数注入的情况下访问这些值(解释如下)

长版本:

简单地说,我们有一个包含3个项目的解决方案:

  • 数据:负责设置ApplicationDbContext,生成迁移
  • 服务:具有一些业务逻辑的类库
  • WebApi:restapi和Startup.cs
  • 在这种体系结构中,我们必须解决核心1.0.0中仍然存在的“添加迁移”问题。此解决方案的一部分意味着我们有一个ApplicationDbContextFactory类,该类必须具有无参数构造函数(无DI),以便迁移CLI使用它

    问题:现在我们在两个地方有连接字符串

  • 迁移解决方案的ApplicationDbContextFactory
  • 在WebApi的“appsettings.json”文件中
  • 在.Net Core之前,我们可以使用ConfigurationManager根据启动项目从一个web.config文件中提取所有解决方案项目的连接字符串。我们如何使用这个新的IConfiguration框架将连接字符串存储在一个需要在整个解决方案中使用的位置?此外,我无法将注入到ApplicationDbContextFactory类的构造函数中。。。因此,这进一步使事情复杂化(因为它们改变了[FromServices]属性的工作方式)

    旁注:我不想仅仅为了属性注入而实现整个DI中间件,因为Core包含自己的DI框架。如果我可以避免这种情况,并且仍然访问appsettings.json值,那将是理想的选择


    如果我需要添加代码,请让我知道,这篇文章已经足够长了,所以我将在收到请求之前暂缓讲述示例

    您不应该在appsettings.json中真正使用连接字符串,因为它不安全(即存储库中的意外提交)。您可以为此使用用户机密(这是一个共享位置,取决于操作系统)并具有机密id,或者通过环境变量设置连接字符串(在azure app service上托管时特别有用)。在project中使用相同的
    userSecretsId
    时,可以让多个应用程序共享相同的用户机密。json@Tseng谢谢,我会转而考虑使用机密。您是否考虑过使用
    选项
    方法?您的解决方案中的所有项目都可能依赖于选项,并且只有在根应用程序的startup.cs中,您才能阅读appsettings来构建选项。@KiranChalla我已经研究过这种方法。我遇到的问题是必须注入IOptions,而我无法注入DbContext工厂类。(这取决于FromServicesAttribute上的更改。)