尝试在.NET CORE Web应用程序中创建控制器时出错

时间:2020-01-08 17:30:16

标签: c# asp.net-core asp.net-web-api .net-core controller

我在Visual Studio 2017中创建了一个.NET CORE 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();
    }

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>();
}

我试图创建一个控制器。我选择添加的控制器的类型为“使用Entity Framework的具有视图的MVC控制器”。尝试创建时,我在窗口中指定了模型类,并在“生成视图”,“参考脚本库”和“使用布局页面”中打了勾,默认情况下已打勾。用于指定“布局”页面的文本框为空白。

尝试创建控制器时,出现以下错误:

运行所选代码生成器时发生错误:脚手架 无法编辑Startup类以使用来注册新的上下文 依赖注入。确保有一个Startup类和一个 其中的配置属性

无法弄清楚为什么会发生此错误。是因为DI还是实体上下文问题?

3 个答案:

答案 0 :(得分:0)

您必须首先配置DbContext的依赖项注入。本教程分步说明了您需要做什么。

ASP.NET With Entity Framework

答案 1 :(得分:0)

您还必须确保在Startup类 ConfigureServices()方法中也注册了DbContext。

启动类中的

首次注入 IConfiguration 接口:

public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

然后将以下代码添加到ConfigureServices方法:

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

,然后在 appsettings.json 中添加ConnectionString地址:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
  } 
}

答案 2 :(得分:0)

尝试使用nuget软件包管理器将项目中的软件包更新为最新版本。

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