在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看那裏的字符串?web.config中的ASP.NET 5/EF7連接字符串?
回答
web.config
轉換語法是面向XML格式的數據。新的配置由一些JSON格式的文件組成,並且可以非常容易地實現登臺場景。
所有ASP.NET首先支持允許設置通過使用ASPNET_ENV
環境變量或通過在launchSettings.json
文件(見項目的Properties
文件夾)設置Hosting:Environment
目標環境。文件launchSettings.json
可以在Visual Studio中的項目屬性中進行修改。每個人都應該首先選擇「檔案」
,並設置每個配置文件。或者,您可以手動編輯文件Properties\launchSettings.json
。
一些配置文件,例如hosting.json
自動使用登臺。因此,例如,您可以通過在hosting.json
和hosting.Development.json
中指定server.urls
來設置不同的端口和不同的接口綁定。
若要在appsettings.json
中包含登臺邏輯,需要在Startup.cs
中修改Startup
類的構造函數。例如:
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祕密管理器。
每次訪問配置時,它都會覆蓋它所具有的任何配置值的設置,這意味着該變量將反映設置爲最後的所有配置值。
- 1. web.config中的連接字符串
- 2. web.config中的連接字符串安全
- 3. web.config中的加密連接字符串
- 4. web.config中的sqlite連接字符串
- 5. 在Web.config中的連接字符串
- 6. web.Config中的連接字符串
- 7. 如何使用連接字符串從web.config在asp.net中的app.config
- 8. 連接字符串從ASP.net中的web.config文件加載C#
- 9. 加密ASP.Net中的數據庫連接字符串Web.config
- 10. 從asp.net中的Web.config獲取連接字符串
- 11. 確保連接字符串和web.config中
- 12. 在web.config中加密連接字符串
- 13. web.config中的連接字符串無法連接
- 14. ASP.NET的連接字符串
- 15. 簡化web.config連接字符串加密
- 16. VB.NET連接字符串(Web.Config,App.Config)
- 17. 從web.config讀取連接字符串
- 18. Web.config和dbml連接字符串
- 19. 拆分一個web.config連接字符串
- 20. 在web.config中連接到MSSQL時沒有連接字符串
- 21. asp.net mvc 3 web.config連接字符串加密
- 22. ASP.NET Web.Config文件指定一個數據源連接字符串
- 23. 這個ASP.Net web.config連接字符串有什麼問題?
- 24. 使用web.config(asp.net,vb)來保存數據庫連接字符串
- 25. ASP.NET web.config連接字符串與CredentialCache默認憑據
- 26. Visual Studio 2012 ASP.NET MVC連接字符串Web.Config
- 27. ASP.NET連接字符串
- 28. ASP.net Paraccel連接字符串
- 29. ASP.NET MVC連接字符串
- 30. ASP.NET連接字符串和DSN連接
你怎麼會從其他地方訪問公共'Configuration'財產中的應用,例如在控制器或過濾器?我寧願將它設置爲'private',並通過DI容器提供給需要它的任何東西:'services.AddSingleton(Configuration)'。 –
ProfK
@ProfK:上面的代碼使用'static'和'set'屬性(可以是'private set;')作爲'Configuration':'public static IConfigurationRoot Configuration {get;私人設置; }'。因此,可以在代碼的每個部分使用'Startup.Configuration [「Data:ConnectionString」]'來讀取應用程序配置中的任何信息。 – Oleg