在没有 Beta8 的 Startup.cs 的情况下,在 vNext 中读取 config.json

Reading config.json in vNext without Startup.cs in Beta8

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

我尝试实例化一个配置 class(似乎在 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);
    }
}

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

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

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