HostingEnvironment 不包含 IsHosted 的定义

Gia*_*ini 5 c# asp.net iis .net-core asp.net-core

我正在开发一个 C# 应用程序,我需要确定我是否在 IIS 下。我在 SO 上看到了一些关于使用该HostingEnvironment.IsHosted方法的问题。不幸的是,如果我写这样的东西:

if (HostingEnvironment.IsHosted)
{
    // on IIS
}
else
{
   // not on IIS
}
Run Code Online (Sandbox Code Playgroud)

我收到一个编译错误:

HostingEnvironment 不包含 IsHosted 的定义

我正在使用: Microsoft.AspNetCore.Hosting; Microsoft.AspNetCore.Hosting.Internal;

编辑

尝试System.Web.Hosting.HostingEnvironment.IsHosted按照建议使用,但没有用

在此处输入图片说明

Bra*_*don 4

这可能会有所帮助。IHostingEnvironment你可以这样获取:

var hostingEnvironment =(IHostingEnvironment)options.ApplicationServices.GetService(typeof(IHostingEnvironment))

if(hostingEnvironment.IsProduction())
{
    // do work
}
Run Code Online (Sandbox Code Playgroud)

环境设置在您的launchSettings.json. 在您的启动配置文件下:

"IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "/api/values",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
},
Run Code Online (Sandbox Code Playgroud)

部署时默认值为“生产”。

编辑:我实际上遗漏了一部分。您需要将代码封装在.UseKestrel(options => { /* environment code */ })