Подтвердить что ты не робот

Определение имени среды ядра ASP.NET в представлениях

Новая структура 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="#" onclick="location.href='https://ajax.aspnetcdn.com/ajax/bootstrap/3.0.0/css/bootstrap.min.css'; return false;"
          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>

Но как определить и визуализировать имя текущей среды в _Layout.cshtml веб-приложения ASP.NET Core MVC?

Например, я хочу визуализировать имя среды (Production, Staging, Dev) как комментарий HTML для целей отладки:

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

Ответ 1

Вы можете ввести услугу IHostingEnvironment в своем представлении, выполнив  @inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv
и сделайте a @hostingEnv.EnvironmentName

Ответ 2

Я только что сделал простой контроллер 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, чтобы увидеть значение.

Ответ 3

В .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");
}