[英]Dependency Injection IApplicationEnvironment Error
一整天我都在努力让这个工作。
我正在通过此代码进行依赖注入:
public Startup(IApplicationEnviroment appEnv)
{
var builder = new ConfigurationBuilder()
.SetBasePath(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
每次执行此代码时,都会出现以下错误:
我真的很生气,因为我无法让它工作,我对此一无所知。 我对 Asp.Net 和 C# 比较陌生,但这就是教程告诉我要做的。 大家知道我关于代码的问题是什么吗?
#if DEBUG
services.AddScoped<IMailService, DebugMailService>();
#else
services.AddScoped<IMailService, RealMailService>();
#endif
我的界面:
public interface IMailService
{
bool SendMail(string to, string from, string subject, string body);
}
我的调试邮件服务
public class DebugMailService : IMailService
{
public bool SendMail(string to, string from, string subject, string body)
{
Debug.WriteLine($"Sending mail: To: {to}, Subject: {subject}");
return true;
}
}
有两种可能:
http://json.schemastore.org/project
正如您在下面看到的,智能感知工作正常并找到IApplicationEnvironment
,它存在于Microsoft.Extensions.PlatformAbstractions
。
然而,幸运的是在 RC1 中,不再需要在Configuration()
上包含ApplicationBasePath
,它存在于IApplicationEnvironment
。 这意味着它可以选择将IApplicationEnvironment
注入到您的案例中的Startup
中。 我的消息来源:这里和这里。
所以你可以像这样改变你的启动方法:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
Configuration = builder.Build().ReloadOnChanged("appsettings.json");
}
最后,请确保您没有任何版本不匹配,如果您在同一解决方案中包含beta8
和rc1-final
软件包,肯定会导致问题。 既然您说您是 asp.net 的新手,并且还没有使用config.json
,那么告诉我您可能会将 beta 版本与 RC asp.net 核心版本混淆。 尽管您可以随意命名,但默认命名已更改为appsettings.json
。 因此,再次确保project.json
文件中的包版本在同一版本上。
我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.