.NET Core中是否有System.Web.Hosting.HostingEnvironment.IsHosted的等效实现?
.NET Core中替代System.Web.Hosting.HostingEnvironment.IsHosted的方案
在.NET Core/.NET 5+生态中,没有直接对应System.Web.Hosting.HostingEnvironment.IsHosted的属性,但可以通过以下两种方式实现相同的判断逻辑(判断代码是否在ASP.NET托管环境中运行):
依赖注入场景(推荐)
通过判断注入的IHostEnvironment是否为IWebHostEnvironment类型,来确认当前是否处于Web托管环境:using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; public class YourService { private readonly IHostEnvironment _hostEnvironment; public YourService(IHostEnvironment hostEnvironment) { _hostEnvironment = hostEnvironment; } public bool IsHosted() { return _hostEnvironment is IWebHostEnvironment; } }无依赖注入场景
通过全局服务提供者检查是否存在IWebHostEnvironment实例,以此判断是否处于托管环境:using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; public static class HostingChecker { public static bool IsHosted() { return Host.DefaultServiceProvider?.GetService(typeof(IWebHostEnvironment)) != null; } }
需要注意的是,IsHosted的核心意图是区分代码是否运行在ASP.NET托管进程(如IIS、Kestrel)中,而非独立的控制台/桌面应用。上述方案可以覆盖绝大多数实际开发场景。
内容的提问来源于stack exchange,提问作者Muflix
相关产品推荐
相关产品推荐

