asp.net-core - 如何在 Razor Pages ASP.NET Core 的布局中访问 HostingEnvironment?

标签 asp.net-core razor-pages

所以最终目标是我希望在仪表板中根据 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/

相关文章:

c# - 如何将数据(数组)添加到 Identityserver 4 生成的 jwt token

asp.net-core - 默认 ASP.NET 核心项目无法发布

asp.net-core - 组件空间 SAML

javascript - DatePicker 不尊重表单重置

asp.net-core - ASP.NET Core 自定义脚手架 - Visual Studio 2019

c# - Razor Page Net Core 2.0 - 发布后保留数据

c# - 更改密码时如何重复使用身份密码验证

javascript - 在 Ajax 调用后重定向到另一个页面?

c# - ActionResult 扩展不适用于 Page() ActionResult 方法

c# - Azure Web API 访问 : Which URL should I use, Web 服务 URL 或网关 URL?