当我使用EntityFramework创建带有视图的MVC控制器时,我无法路由到它

when i create mvc controller with views,using entityframework i cant route to it

提问人:mani agah smailzad 提问时间:10/20/2023 最后编辑:Peter Bmani agah smailzad 更新时间:10/20/2023 访问量:50

问:

我的控件构建得很好,但我无法到达该路径,并且出现此错误:

处理请求时发生未处理的异常。 InvalidOperationException:尝试激活“First_Identity_Project.Controllers.UsersController”时,无法解析类型为“First_Identity_Project.Models.Utility”的服务。 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired)

InvalidOperationException:尝试激活“First_Identity_Project.Controllers.UsersController”时,无法解析类型为“First_Identity_Project.Models.Utility”的服务。

我的上下文中的代码:

using Microsoft.EntityFrameworkCore;

namespace First_Identity_Project.Models
{
    public class Utility:DbContext
    {
        public DbSet<User> UserTbl { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("server=.;database=firstIdentityDb;user Id = sa;password= Aa123456;Trusted_Connection = true;trustServerCertificate=true;");
        }
    }
}

程序 .cs 文件中的代码:

using First_Identity_Project.Controllers;
using Microsoft.Extensions.DependencyInjection.Extensions;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

我没有对控制器内的代码进行任何更改

C# asp.net-identity

评论

1赞 jeb 10/20/2023
该错误表明您的 UsersController 使用实用程序,但无法创建它。你能展示你的控制器吗?我的猜测是您忘记将实用程序添加到依赖注入中。
1赞 Peter B 10/20/2023
发生错误,因此请编辑问题以显示其代码。如果它有很多操作方法,那么只需显示相关的方法。UsersController
0赞 Denis Micheal 10/20/2023
添加到 DI。在添加UtilityProgram.csbuilder.Services.AddDbContext<Utility>(options => options.UseSqlServer("connectionString"));

答:

0赞 Qiang Fu 10/20/2023 #1

将 connectionString 放在上下文中,但仍需要将 dbcontext 添加到 program.cs 中的服务。或者无法解析此 dbcontext。

builder.Services.AddDbContext<Utility>();

另一种模式是将 connectionString 放在 program.cs 中。它会像

    public class Utility : DbContext
    {
        public DbSet<User> UserTbl { get; set; }
        public Utility(DbContextOptions<Utility> options)
            : base(options)
        {
        }
    }

然后在程序.cs

builder.Services.AddDbContext<Utility>(options => 
            options.UseSqlServer("server=.;database=firstIdentityDb;user Id = sa;password= Aa123456;Trusted_Connection = true;trustServerCertificate=true;")
            );