所以最终目标是我希望在仪表板中根据 appsettings.json 中的连接字符串突出显示连接到哪些数据库服务器。我有这个工作,但只适用于主要的 appsettings.json,而我想知道在考虑 appsettings.Development.json 和 appsettings.Production.json 时发生了什么。
为了做到这一点,我需要一种访问 HostingEnvironment 的方法,但我似乎找不到在布局中公开它的方法。
var env = Context.HostingEnvironment; // this is the part I need to fix, everything else works.
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.Build();
var sqlBuilder = new SqlConnectionStringBuilder();
sqlBuilder = new SqlConnectionStringBuilder(configuration.GetConnectionString("DB1Connection"));
ViewData["DB1"] = sqlBuilder.DataSource;
sqlBuilder = new SqlConnectionStringBuilder(configuration.GetConnectionString("DB2Connection"));
ViewData["DB2"] = sqlBuilder.DataSource;
sqlBuilder = new SqlConnectionStringBuilder(configuration.GetConnectionString("DB3Connection"));
ViewData["DB3"] = sqlBuilder.DataSource;
最佳答案
使用 @inject
指令注入(inject)它的一个实例:
@inject IWebHostEnvironment environment
<!DOCTYPE html>
<html>
<head>...
然后你可以稍后使用它:
@if(environment.IsDevelopment())
{
...
}
您需要在顶级 _ViewImports 文件中添加一些 using
指令:
@using Microsoft.AspNetCore.Hosting
@using Microsoft.Extensions.Hosting
有关注入(inject) View 和布局的更多信息,请参见此处:https://www.learnrazorpages.com/advanced/dependency-injection#injecting-into-content-pages-or-views
关于asp.net-core - 如何在 Razor Pages ASP.NET Core 的布局中访问 HostingEnvironment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64578464/