[英]ASP.NET Core 3.1: Add framework service: IHostEnvironment
我有一個 asp.net 核心 3.1 應用程序,我試圖在我的 ConfigureServices 中注入框架服務 IHostEnvironment,這樣我就可以在我的應用程序服務中獲取環境,並且應用程序拋出錯誤。
啟動.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 的遷移指南中提到的, IWebHostEnvironment
應該注入Startup
class 而不是IHostingEnvironment
。 此外,我建議考慮將IConfiguration
注入服務而不是IConfigurationRoot
,或者甚至更好地考慮將相關配置部分綁定/注冊到某些 class 並注入它(請參閱ASP.NET Core 中的配置和 ASP.NET Core 中的選項模式)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.