我目前正在使用servicestack和asp.net core 2.1创建一个Angular应用程序。我在将连接字符串从“启动”传递到“ AppHost.Configure”功能时遇到问题(AppHost继承自AppHostBase)。正确的方法是什么?我应该在AppHost中重新加载整个appsettings,然后在AppHost中创建单例吗?还是我没有想到的其他方式?
我在启动时创建了一个单例,这使我可以在其他任何地方访问,但不能在AppHost中访问。
答案 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");