【问题标题】:Reading config.json in vNext without Startup.cs in Beta8在 Beta8 中不使用 Startup.cs 在 vNext 中读取 config.json
【发布时间】:2015-10-26 00:16:47
【问题描述】:

所以我没有启动文件,因为我的 DAL 在另一个项目中。我只是希望能够读取该项目中的 config.json 文件以获取连接字符串。

我尝试实例化一个配置类(它似乎在 beta4 中),并使用它来获取连接字符串,但它一直传回一个空值。有人有什么见解吗?

文件夹结构:

=>MyProject.DAL
BlogContext.cs
config.json
project.json

这是我的 project.json

{
  "version": "1.0.0-*",
  "description": "MyProject.DAL Class Library",
  "authors": [ "Admin" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",
  "frameworks": {
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23409",
        "System.Collections": "4.0.11-beta-23409",
        "System.Linq": "4.0.1-beta-23409",
        "System.Runtime": "4.0.21-beta-23409",
        "System.Threading": "4.0.11-beta-23409"
      }
    }
  },
  "dependencies": {
    "EntityFramework.Core": "7.0.0-beta8",
    "EntityFramework.SqlServer": "7.0.0-beta8",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta8",
    "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8",
    "Microsoft.Framework.Configuration.CommandLine": "1.0.0-beta8",
    "Microsoft.Framework.Configuration.EnvironmentVariables": "1.0.0-beta8",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta8",
    "Microsoft.Framework.ConfigurationModel": "1.0.0-beta4",
    "Microsoft.Framework.Logging.Console": "1.0.0-beta8",
    "MyProject.Entities": "1.0.0-*"
  }
    }

这是 config.json

{
    "Data": {
        "DefaultConnection": {
      "ConnectionString": "Server=.\\SQLEXPRESS;Database=SolutionPub;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
}

}

BlogContext.cs

public class BlogContext: DbContext
{

    public BlogContext()
    {
        Database.EnsureCreated();
    }

    public DbSet<Post> Posts { get; set; }
    public DbSet<Tag> Tags { get; set; }
    public DbSet<Comment> Comments { get; set; }
    public DbSet<Image> Images { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var configuration = new Configuration();
        var connectionString = configuration.Get("Data:DefaultConnection:ConnectionString");

        optionsBuilder.UseSqlServer(connectionString);

        base.OnConfiguring(optionsBuilder);
    }
}

【问题讨论】:

    标签: asp.net asp.net-core asp.net-core-mvc


    【解决方案1】:

    系统不知道您要使用config.json。你必须告诉它。

     var configuration = new Configuration();
     configuration.AddJsonFile("config.json");
     var connectionString = configuration.Get("Data:DefaultConnection:ConnectionString");
    

    如果它在另一个项目中,您应该首先问自己为什么该项目直接访问配置文件而不是从启动项目中传递它。但如果你真的想这样做,那么只需在AddJsonFile 调用中修改文件的路径即可。

    【讨论】:

      猜你喜欢
      • 2016-01-16
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多