Determine ASP.NET Core environment name in the views

Nikolay Kostov picture Nikolay Kostov · Nov 15, 2015 · Viewed 16.2k times · Source

The new ASP.NET Core framework gives us ability to execute different html for different environments:

<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>

But how can I determine and visualize the name of the current environment in the _Layout.cshtml of an ASP.NET Core MVC web application?

For example I want to visualize the environment name (Production, Staging, Dev) as a HTML comment for debugging purposes:

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

Answer

Kiran Challa picture Kiran Challa · Nov 15, 2015

You can inject the service IHostingEnvironment in your view by doing
@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv
and do a @hostingEnv.EnvironmentName