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

if (HostingEnvironment.IsHosted)
{
    // on IIS
}
else
{
   // not on IIS
}

我收到一个编译错误:



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

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

c# - HostingEnvironment不包含IsHosted的定义-LMLPHP

最佳答案

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

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

if(hostingEnvironment.IsProduction())
{
    // do work
}

环境在launchSettings.json中设置。在您的启动配置文件下:
"IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "/api/values",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
},

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

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

关于c# - HostingEnvironment不包含IsHosted的定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45714568/

10-10 15:27