首页 > 解决方案 > 上下文未正确注入

问题描述

不知道为什么我会收到以下错误。

InvalidOperationException:尝试激活“RoundTableWeb.WMS.Controllers.StockController”时无法解析“AppManagerDL.AppManagerDBContext”类型的服务。

public class StockController : ControllerBase {
    // GET: api/<StocksController>
    private readonly AppManagerDBContext _context;
    public StockController(AppManagerDBContext context) {
        _context = context;
    }

如您所见,我在此处获取 ApplicaitonDBContext 并将其设置为连接字符串。

当我点击我的 get 语句时,它没有注册,di 最终为空。

 [HttpGet]
 public object Get(DataSourceLoadOptions loadOptions) {
       Guid.TryParse("8F553A64-4301-4051-8691-8EBEFF68969D", out Guid result);
       var test = _context.Stockitems.Where(w => w.TennantId == result).ToList();
       return test;
 }

以上是它在_context上刹车。

public void ConfigureServices(IServiceCollection services) {
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
        Configuration.GetConnectionString("DefaultConnection")));
            services.AddDefaultIdentity<IdentityUser>(options => 
                 options.SignIn.RequireConfirmedAccount = true)
                 .AddEntityFrameworkStores<ApplicationDbContext>();                             
        services.AddControllersWithViews().AddJsonOptions(options => 
                  options.JsonSerializerOptions.PropertyNamingPolicy = null);
        services.AddRazorPages();
 }

标签: c#asp.net-core-mvc

解决方案


ApplicationDbContext在启动时配置:

services.AddDbContext<ApplicationDbContext>(options => ...

但注入AppManagerDBContext控制器:

public StockController(AppManagerDBContext context) { ...

它们必须相同。


推荐阅读