依赖注入IApplicationEnvironment错误

时间:2015-12-29 22:48:52

标签: c# asp.net asp.net-mvc dependency-injection config

整天我都试图让这个工作。

我正在通过此代码进行依赖注入:

public Startup(IApplicationEnviroment appEnv)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(appEnv.ApplicationBasePath)
        .AddJsonFile("config.json")
        .AddEnvironmentVariables();

    Configuration = builder.Build();
}

每次执行此代码时,我都会收到以下错误:

enter image description here

我真的很生气,因为我无法让它发挥作用,我对此毫无头绪。我对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;
    }
}

1 个答案:

答案 0 :(得分:5)

它有两种可能性:

  1. project.json中的json架构指向错误的位置。我的是http://json.schemastore.org/project
  2. 您的intellisense可能会给出问题。通常的visual studio重启很多次,但如果没有,stackoverflow会有很多响应来解决这个问题。只是搜索它。
  3. 如下所示,intellisense工作正常并找到IApplicationEnvironment中存在的Microsoft.Extensions.PlatformAbstractions

    IApplicationEnvironment

    然而,幸运的是,在RC1中,它不再需要在ApplicationBasePath上包含Configuration()IApplicationEnvironment中存在IApplicationEnvironment。这意味着可选择为您的案例注入Startup public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddEnvironmentVariables(); Configuration = builder.Build().ReloadOnChanged("appsettings.json"); } 。我的来源:herehere

    所以你可以像这样改变你的启动方法:

    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") 文件中的软件包版本位于同一版本中。

    我希望这会有所帮助。