我正在开发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
,但没有用最佳答案
这可能会有所帮助。您可以这样获取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/