Правильный способ передачи строки подключения из автозагрузки на любой другой контроллер - PullRequest
0 голосов
/ 16 января 2019

В настоящее время я создаю приложение Angular с помощью servicestack и asp.net core 2.1. У меня проблема с передачей строки подключения из «Автозагрузка» в функцию «AppHost.Configure» (AppHost наследуется от AppHostBase). Каков будет правильный способ сделать это? Должен ли я перезагрузить все наборы приложений в AppHost, а затем вместо этого создать синглтон в AppHost? Или это какой-то другой способ, о котором я не подумал?

Я создал синглтон при запуске, который позволяет получить доступ в любом месте, но не в AppHost.

1 Ответ

0 голосов
/ 16 января 2019

Если ваша строка подключения настроена как обычный ключ установки приложения, например:

"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");

В качестве альтернативы вы также можете получить к нему доступ через config обозначение иерархического ключа , например:

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