ASP.. NET Core 3.1:添加框架服务:IHostEnvironment



我有一个asp.net core 3.1应用程序,我试图在我的ConfigureServices中注入框架服务IHostEnvironment,这样我就可以在我的应用程序服务中获得环境,应用程序抛出错误。

Startup.cs:

private IHostEnvironment _env;
public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment)
{
Configuration = configuration;
_env = hostEnvironment;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
//add framework services
services.AddSingleton<IHostEnvironment>(_env);
//add application services
services.AddSingleton<IMySvc, MySvc>();
}

MySvc.cs

public class MySvc : IMySvc
{
private IConfigurationRoot _config;
//private IHostingEnvironment _env;
private IHostEnvironment _env;
public string Env{
get{
if(_env.IsDevelopment()){return _config["MyConfiguration: MyProperty"];}
}
}
public HttpSvc(IConfigurationRoot config, IHostEnvironment env)
{
_config = config;
_env = env;
}
}

应用程序运行失败,报怨无法构建某些服务。

从2.2到3.0的迁移指南中提到,应该在Startup类中注入IWebHostEnvironment,而不是IHostingEnvironment。此外,我建议考虑将IConfiguration注入到服务中,而不是IConfigurationRoot,或者更好地考虑将相关配置部分绑定/注册到某些类并注入它(参见ASP中的配置)。asp.net Core和Options模式。网络核心)

最新更新