【发布时间】:2020-09-01 01:29:29
【问题描述】:
我是 ASP.NET Core 的新手,我正在尝试解决这个问题一个星期。 我有两个项目的解决方案。 当我启动项目时,浏览器只会说: InvalidOperationException:尝试激活“TSM_Programm.Controllers.ResourcesController”时无法解析“TSM_Programm.Data.TSMContext”类型的服务。
解决方案的第一部分是我的 API 层,它将数据传递给用户(目前通过邮递员)。 第二个项目是我的数据访问层。 该层包含多个控制器,它们都使用相同的构造函数,如下所示:
public TSMContext _context;
public ResourcesController(TSMContext context)
{
_context = context;
}
TSMContext 类如下:
namespace TSM_Programm.Data
{
public class TSMContext : DbContext
{
public TSMContext(DbContextOptions<TSMContext> options)
: base(options)
{
}
public DbSet<Resource> Resources { get; set; }
public DbSet<Parameter> Parameters { get; set; }
public DbSet<ResourceToParameter> ResourceToParameters { get; set; }
public DbSet<Reservation> Reservations { get; set; }
}
到目前为止,上帝,但是当我尝试启动程序时,API 层的控制器似乎无法处理构造函数。
这是我的 API 控制器:
namespace TSM_API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class APIController : ControllerBase //Base Class without View Support
{
//Troublemaker
public ResourcesController _resources;
public ParametersController _parameters;
public ReservationsController _reservations;
public APIController(ResourcesController resources, ParametersController parameters, ReservationsController reservations)
{
_resources = resources;
_parameters = parameters;
_reservations = reservations;
}
//Function to check if controller works
//GET: api/API
[HttpGet]
public IEnumerable<string> Get()
{
// ResourcesController controller = new ResourcesController();
return new string[] { "value1", "value2" };
}
API-Controller 无法使用自己的构造函数,这就是我更改 Startup.cs 的原因。
namespace TSM_API
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddMvc().AddApplicationPart(typeof(ResourcesController).Assembly).AddControllersAsServices();
services.AddMvc().AddApplicationPart(typeof(ParametersController).Assembly).AddControllersAsServices();
services.AddMvc().AddApplicationPart(typeof(ReservationsController).Assembly).AddControllersAsServices();
services.AddMvc().AddApplicationPart(typeof(TSMContext).Assembly).AddControllersAsServices();
}
我完全不知道如何解决这个问题,因为我无法将 TSMContext 类添加为服务。 知道如何解决吗?
谢谢。
【问题讨论】:
标签: asp.net asp.net-core dependency-injection constructor dependencies