我整天都在努力使它工作。
我正在通过此代码进行依赖项注入(inject):
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);
}
我的DebugMailService
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
正如您在下面看到的,intellisense可以正常工作并找到
IApplicationEnvironment
中存在的Microsoft.Extensions.PlatformAbstractions
。但是幸运的是,在RC1中,不再需要在
ApplicationBasePath
中存在的Configuration()
上包括IApplicationEnvironment
。表示为您的情况将IApplicationEnvironment
注入(inject)Startup
是可选的。我的资料来源:here和here。因此,您可以像这样更改您的启动方法:
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
。再次,确保中的软件包版本在同一发行版上。我希望这有帮助。
关于c# - 依赖注入(inject)IApplicationEnvironment错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34520325/