当前位置:  开发笔记 > 编程语言 > 正文

从vNext中的appsetting.json读取启动外的连接字符串

如何解决《从vNext中的appsetting.json读取启动外的连接字符串》经验,为你挑选了3个好方法。

我有一个项目类(Nuget Package).我需要在没有构造函数的静态类中读取我的连接字符串到MongoDB.

静态类方法:

        /// 
        /// The default key MongoRepository will look for in the appsettings.json 
        /// 
        private const string DefaultConnectionstringName = "Data:MongoDB:MongoServerSettings";

        /// 
        /// Retrieves the default connectionstring from appsettings.json
        /// 
        /// Returns the default connectionstring from the App.config or Web.config file.
        public static string GetDefaultConnectionString()
        {
            var config = new Configuration();
            return config.Get(DefaultConnectionstringName);
        }

我总是null ...如何在不使用DI的情况下获取Startup.cs之外的值?

有可能的?

在我的旧代码中,我可以做类似的事情:

/// 
    /// Retrieves the default connectionstring from the App.config or Web.config file.
    /// 
    /// Returns the default connectionstring from the App.config or Web.config file.
    public static string GetDefaultConnectionString()
    {
        return ConfigurationManager.ConnectionStrings[DefaultConnectionstringName].ConnectionString;
    }

谢谢!!



1> Saineshwar..:

1. appsetting.json中的.ConnectionString

在此输入图像描述

    在Startup.cs类中创建Singleton Configuration of Configuration

在此输入图像描述

    使用依赖注入从配置实例读取值[构造函数注入]

在此输入图像描述

    最后输出

在此输入图像描述


这应该是公认的答案.很棒的解释.

2> armen.shimoo..:

在启动内部,您应该将连接字符串保存到静态属性上 Startup

public class Startup
{
    public static string ConnectionString { get; private set; }

    public Startup(IHostingEnvironment env)
    {
        // Set up configuration sources.
        var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddUserSecrets();

        if (env.IsDevelopment())
        {
            // For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709
            builder.AddUserSecrets();
        }

        builder.AddEnvironmentVariables();
        Configuration = builder.Build();
        ConnectionString = Configuration.Get("Data:MongoDB:MongoServerSettings");
    }
    // ...
}

然后你应该能够从任何地方访问它:

public static string GetDefaultConnectionString()
{
    return Startup.ConnectionString;
}


它可以工作但不在类库中,它可以在我的HomeController中工作.我没有谈到这个规范...我会标记为有效:)

3> 小智..:

这样的事情应该起作用:

   public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
    {
        var builder = new ConfigurationBuilder(appEnv.ApplicationBasePath).AddJsonFile("config.json");
        Configuration = builder.Build();
        var connStr = Configuration.Get("connString");
    }

文件:http://docs.asp.net/en/latest/fundamentals/configuration.html

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有