依赖注入IApplicationEnvironment错误?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (63)

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

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

    Configuration = builder.Build();
}

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

大家都知道我的代码有什么问题吗?

也许这是个好消息。

#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. 在project.json中的json模式指向了错误的位置。我的是http://json.schemastore.org/project
  2. 智能感知可能会带来问题。通常的visual studio重新启动大多数情况下都能工作,但是如果没有,堆栈溢出会有很多响应来修复这个问题。去找吧。

正如在下面看到的,IntelliSense很好地工作,并找到了IApplicationEnvironment,存在于Microsoft.Extensions.PlatformAbstractions...

不过,幸运的是,在rc1中,它不再需要包括ApplicationBasePathConfiguration(),存在于IApplicationEnvironment,这意味着它可以选择注入IApplicationEnvironmentStartup为你的案子。我的消息来源:这儿这儿...

因此,只需更改启动方法,如下所示:

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文件在同一版本上。

所属标签

可能回答问题的人

  • 找虫虫

    0 粉丝0 提问6 回答
  • 优惠活动秘书

    0 粉丝2 提问6 回答
  • 天使的炫翼

    17 粉丝531 提问5 回答
  • 爸爸

    腾讯 · 客户端安全 (已认证)

    4 粉丝4 提问5 回答

扫码关注云+社区

领取腾讯云代金券