IApplicationEnvironment

IApplicationEnvironment

我整天都在努力使它工作。

我正在通过此代码进行依赖项注入(inject):

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

    Configuration = builder.Build();
}

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

c# - 依赖注入(inject)IApplicationEnvironment错误-LMLPHP

我对此感到非常恼火,因为我无法使其正常运行,并且对此一无所知。我对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;
    }
}

最佳答案

可能有两种可能性:

  • 您project.json中的json模式指向错误的位置。我的是http://json.schemastore.org/project
  • 您的智能感知可能会出问题。通常的Visual Studio重新启动在大多数情况下都可以正常工作,但是,如果这样不行,则stackoverflow有很多响应可以解决该问题。只是搜索它。

  • 正如您在下面看到的,intellisense可以正常工作并找到IApplicationEnvironment中存在的Microsoft.Extensions.PlatformAbstractions

    c# - 依赖注入(inject)IApplicationEnvironment错误-LMLPHP

    但是幸运的是,在RC1中,不再需要在ApplicationBasePath中存在的Configuration()上包括IApplicationEnvironment。表示为您的情况将IApplicationEnvironment注入(inject)Startup是可选的。我的资料来源:herehere

    因此,您可以像这样更改您的启动方法:
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddEnvironmentVariables();
    
        Configuration = builder.Build().ReloadOnChanged("appsettings.json");
    }
    

    最后,确保没有任何版本不匹配,如果在同一解决方案中将beta8rc1-final包一起包括在内,则肯定会导致问题。既然您说过您是asp.net的新手,并且还使用了config.json,则告诉我您可能会将Beta版本与RC asp.net核心版本混淆了。即使您可以随意命名,默认命名也已更改为appsettings.json。再次,确保中的软件包版本在同一发行版上。

    我希望这有帮助。

    关于c# - 依赖注入(inject)IApplicationEnvironment错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34520325/

    10-09 00:04