В ASP.Net 4.5 Я могу поместить строку подключения в web.config
, чтобы воспользоваться web.config transformations
, чтобы я мог работать локально с БД разработки, а затем, когда я публикую это, укажу на производственную БД. Теперь я работаю с ASP.Net 5 и EF 7, который, как представляется, использует файл config.json
для хранения строк подключения вместо web.config
. Благодаря этому новому способу хранения файлов я не могу понять, как сделать что-то вроде web.config transformations
из прошлого. Как я могу либо настроить config.json
, чтобы сделать это, либо настроить его, чтобы я мог сделать это в файле web.config и посмотреть EF на строки?Строка соединения ASP.NET 5/EF7 в web.config?
ответ
Синтаксис преобразования web.config
ориентирован на XML-формат данных. Новые конфигурации состоят из некоторых файлов в формате JSON, и очень легко реализовать сценарии создания.
Прежде всего ASP.NET поддерживает позволяет установить среду назначения путем использования ASPNET_ENV
переменной окружения или путем установки Hosting:Environment
launchSettings.json
в файле (см Properties
папку вашего проекта). Файл launchSettings.json
может быть изменен в Visual Studio в свойствах проекта. Нужно сначала выбрать «Профиль»
и сделать настройки для каждого профиля. В качестве альтернативы можно просто отредактировать файл Properties\launchSettings.json
вручную.
Некоторые файлы конфигурации, такие как hosting.json
, работают автоматически с использованием промежуточной установки. Таким образом, вы можете установить, например, различные порты и различные привязки интерфейса, указав, например, server.urls
в hosting.json
и hosting.Development.json
.
Для включения промежуточной логики в appsettings.json
необходимо изменить конструктор класса Startup
в Startup.cs
. Например:
public class Startup
{
public static IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc()
.AddJsonOptions(options => {
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver();
});
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<MyContext>(options => {
options.UseSqlServer(Configuration["Data:ConnectionString"]);
})
.AddDbContext<SM9Context>(options => {
options.UseSqlServer(Configuration["Data:SM9ConnectionString"]);
});
}
}
Приведенный выше код сохраняет конфигурацию в Configuration
собственности, а затем использует ConfigureServices
сделать инъекцию MyContext
и SM9Context
контекстах баз данных. Можно, например, создать главный appsettings.json
файл со всей производительной конфигурацией и создать appsettings.Development.json
файл, который перекрывает только один (от двух Data:ConnectionString
и Data:SM9ConnectionString
) строки подключения:
{
"Data": {
"ConnectionString": "Server=..."
}
}
ASP.NET будет совмещать оба файл appsettings.json
и дополнительный appsettings.Development.json
для создания полного набора параметров конфигурации.
The article и the part документации описывается, как можно использовать постановку в ASP.NET 5.
Вы можете сделать что-то подобное, чтобы вытащить конфиги из разных файлов * .json, следующие основы их в среде или из переменных среды;
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
.AddEnvironmentVariables();
Вы также можете использовать секретный менеджер ASPNET.
Каждый раз, когда доступ к конфигурации выполняется, он будет переопределять настройки для любых значений конфигурации, которые он имеет, то есть переменная будет отражать то, что было установлено последним.
Проверьте docs on Configuration.
- 1. Строка соединения Sqlite в web.config
- 2. Строка соединения в файле web.config
- 3. Строка соединения с ASP.Net
- 4. Строка соединения VB.NET (Web.Config, App.Config)
- 5. Строка соединения Web.config и dbml
- 6. ASP.NET Строка соединения Шифрование/Защита
- 7. Строка соединения ASP.NET web.config с учетными данными по умолчанию CredentialCache
- 8. Строка соединения C# в файле web.config
- 9. проблема web.config в ASP.Net
- 10. Строка динамического соединения Asp.net MVC 4
- 11. Строка соединения Проблемы C# ASP.NET
- 12. SQL Строка соединения для asp.net
- 13. зашифрованная строка подключения в web.config
- 14. Строка соединения EntityFramework при ссылке на web.config проекта
- 15. asp.NET Web.config
- 16. web.config одна строка соединения для обоих DbContext и ObjectContext
- 17. Строка соединения Entity Framework web.config для базы данных IBM DB2
- 18. не было строки соединения, найденной в web.config
- 19. ASp.net Web Application Строка соединения Проблема
- 20. Строка соединения SQL Express hell ASP.Net
- 21. Что касается недостающее строки соединения в web.config
- 22. 'Unicode' является недопустимой строка соединения атрибута Asp.net
- 23. Настройка маршрутизации ASP.NET в Web.config
- 24. Побег цитаты в строке соединения web.config
- 25. SQL Строка соединения
- 26. EF Строка соединения Ошибка
- 27. Web.Config файл в asp.net
- 28. web.config в asp.net
- 29. web.config установки в asp.net
- 30. Web.config в asp.net?
Как бы доступ общественности 'свойство Configuration' из других приложения, например, в контроллере или фильтре? Я бы предпочел сделать его «частным» и доступным для всего, что ему нужно, через контейнер DI: 'services.AddSingleton (Configuration)'. –
ProfK
@ProfK: приведенный выше код использует свойство 'static' и' set' (может быть 'private set;') для 'Configuration':' public static Конфигурация IConfigurationRoot {get; частный набор; } '. Таким образом, можно было бы использовать «Startup.Configuration [" Data: ConnectionString "]' в каждой части кода для чтения любой информации из конфигурации приложения. – Oleg