整天我都试图让这个工作。
我正在通过此代码进行依赖注入:
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;
}
}
答案 0 :(得分:5)
它有两种可能性:
http://json.schemastore.org/project
如下所示,intellisense工作正常并找到IApplicationEnvironment
中存在的Microsoft.Extensions.PlatformAbstractions
。
然而,幸运的是,在RC1中,它不再需要在ApplicationBasePath
上包含Configuration()
,IApplicationEnvironment
中存在IApplicationEnvironment
。这意味着可选择为您的案例注入Startup
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
Configuration = builder.Build().ReloadOnChanged("appsettings.json");
}
。我的来源:here和here。
所以你可以像这样改变你的启动方法:
beta8
最后,请确保您没有任何版本不匹配,如果您在同一解决方案中包含rc1-final
config.json
个软件包,肯定会导致问题。既然你说你是asp.net的新用户以及appsettings.json
的使用,请告诉我你可能会对使用RC asp.net核心版本的beta版本感到困惑。即使您可以随意命名,默认命名也会更改为project.json
。同样,确保 @user = User.new(user_params)
@company = Company.new(name: 'Acme')
UserCompany.create(user: @user, company: @company, company_role: "owner")
文件中的软件包版本位于同一版本中。
我希望这会有所帮助。