HostingEnvironment不包含IsHosted的定义

时间:2017-08-16 13:12:44

标签: c# asp.net iis asp.net-core .net-core

我正在开发一个C#应用程序,我需要知道我是否在IIS下。我在使用HostingEnvironment.IsHosted方法时遇到了一些关于SO的问题。不幸的是,如果我写下这样的话:

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

我收到编译错误:

  

HostingEnvironment不包含IsHosted

的定义

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

修改

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

enter image description here

2 个答案:

答案 0 :(得分:4)

这可能会有所帮助。您可以像这样获取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 */ })

中包含代码

答案 1 :(得分:0)

您的意思是System.Web.Hosting.HostingEnvironment.IsHosted

https://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.ishosted(v=vs.110).aspx

不确定ASP.NET Core等价物是什么。