繁体   English   中英

在视图中确定 ASP.NET Core 环境名称

[英]Determine ASP.NET Core environment name in the views

新的 ASP.NET Core 框架使我们能够为不同的环境执行不同的 html:

<environment names="Development">
    <link rel="stylesheet" href="~/lib/material-design-lite/material.css" />
    <link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment names="Staging,Production">
    <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.0.0/css/bootstrap.min.css"
          asp-fallback-href="~/lib/material-design-lite/material.min.css"
          asp-fallback-test-class="hidden" asp-fallback-test-property="visibility" asp-fallback-test-value="hidden"/>
    <link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/>
</environment>

但是如何确定和可视化ASP.NET Core MVC Web 应用程序_Layout.cshtml当前环境的名称

例如,我想将环境名称(Production、Staging、Dev)可视化为用于调试的 HTML 注释:

<!-- Environment name: @......... -->

您可以通过执行IHostingEnvironment在您的视图中注入服务IHostingEnvironment
@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv
并做一个@hostingEnv.EnvironmentName

我刚刚做了一个简单的 API 控制器:

[Route("api/[controller]")]
public class DebugController : Controller
{
    private IHostingEnvironment _hostingEnv;

    public DebugController(IHostingEnvironment hostingEnv)
    {
        _hostingEnv = hostingEnv;
    }

    [HttpGet("environment")]
    public IActionResult Environment()
    {
        return Ok(_hostingEnv.EnvironmentName);
    }

然后我只需运行/api/debug/environment即可查看该值。

以下工作在 .net core 2.2 中:

@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment env
@using Microsoft.AspNetCore.Hosting 

if (env.IsProduction())
{
   //You can also use:

   //env.IsStaging();
   //env.IsDevelopment();
   //env.IsEnvironment("EnvironmentName");
}

从 .NET Core 3.1 开始,建议使用

@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment hostingEnv

将此添加到 Razor 视图的顶部。 您可以使用@hostingEnv.EnvironmentName获取当前环境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM