我正在开发一个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
,但它没有工作
答案 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
不确定ASP.NET Core等价物是什么。