将连接字符串从启动传递到任何其他控制器的正确方法

时间:2019-01-15 22:23:54

标签: servicestack asp.net-core-2.1

我目前正在使用servicestack和asp.net core 2.1创建一个Angular应用程序。我在将连接字符串从“启动”传递到“ AppHost.Configure”功能时遇到问题(AppHost继承自AppHostBase)。正确的方法是什么?我应该在AppHost中重新加载整个appsettings,然后在AppHost中创建单例吗?还是我没有想到的其他方式?

我在启动时创建了一个单例,这使我可以在其他任何地方访问,但不能在AppHost中访问。

1 个答案:

答案 0 :(得分:1)

如果您的连接字符串被配置为普通的appSetting密钥,例如:

"MyConnection": "Server=localhost;Database=MyDb;User Id=test;Password=test;"

然后,当您将.NET Core的IConfiguration传递到ServiceStack AppHost中时:

app.UseServiceStack(new AppHost
{
    AppSettings = new NetCoreAppSettings(Configuration)
});

您可以将其作为正常的应用设置进行检索,例如:

var myConn = AppSettings.GetString("MyConnection");

相反,如果您在“ ConnectionStrings”分组下进行配置,例如:

"ConnectionStrings": {
  "DefaultConnection": "Server=localhost;Database=MyDb;User Id=test;Password=test;"
},

然后,您可以从IConfiguration对象访问它,例如:

var config = (NetCoreAppSettings) AppSettings;
var myConn = config.Configuration.GetConnectionString("DefaultConnection");

或者,您也可以通过配置hierarchical key notation访问它,例如:

var myConn = AppSettings.GetString("ConnectionStrings:DefaultConnection");