C# 尝试在.NET核心Web应用程序中创建控制器时出错

C# 尝试在.NET核心Web应用程序中创建控制器时出错,c#,asp.net-core,asp.net-web-api,.net-core,controller,C#,Asp.net Core,Asp.net Web Api,.net Core,Controller,我在Visual Studio 2017中创建了一个.NET核心Web应用程序。它是作为空模板创建的 startup.cs具有以下代码 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddSingleton<IInventoryServices, InventoryServices>(); }

我在Visual Studio 2017中创建了一个.NET核心Web应用程序。它是作为空模板创建的

startup.cs具有以下代码

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddSingleton<IInventoryServices, InventoryServices>();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseMvcWithDefaultRoute();
    }
public void配置服务(IServiceCollection服务)
{
services.AddMvc();
services.AddSingleton();
}
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvcWithDefaultRoute();
}
program.cs如下所示:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 
WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();
}
公共类程序
{
公共静态void Main(字符串[]args)
{
CreateWebHostBuilder(args.Build().Run();
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
CreateDefaultBuilder(args).UseStartup();
}
我试图创建一个控制器。我选择添加的控制器类型是“使用实体框架的视图MVC控制器”。在尝试创建时,我在窗口中指定了模型类,并勾选了“生成视图”、“引用脚本库”和“使用布局页面”,默认情况下,这些都是勾选的。用于指定布局页面的文本框留空

尝试创建控制器时,我遇到以下错误:

运行所选代码生成器时出错:Scaffolding 无法编辑启动类以使用注册新上下文 依赖注入。确保有一个启动类和一个 其中的配置属性


无法找出发生此错误的原因。这是因为DI还是实体上下文问题?

必须首先配置DbContext的依赖项注入。本教程一步一步地解释您需要做什么


您必须确保DbContext也已注册到Startup类ConfigureServices()方法中

启动类中的第一次注入i配置接口:

public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
然后将以下代码添加到ConfigureServices方法:

services.AddDbContext<AppContext>(options => 
       options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

尝试使用nuget package manager将项目中的包更新为最新版本


这解决了“我正在使用.Net 5.0”的问题,因此这可能适合您。

AminGolmahalle是对的,请按照教程进行操作:谢谢您的回复。只有一个澄清。我不明白我的配置。我能知道它的用途吗?用于根据密钥从appsettings.json读取配置的IConfiguration接口。你能克服这个问题吗?了解更多:我是核心的新手。我的项目中没有appsettings和json。属性部分中有一个launchSettings.json。我应该如何添加ConnectionString。请advise@sms101有关concpet asp.net core的了解,请参阅以下链接:
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
  } 
}