通常,这种问题是由于控制器的构造函数中缺少依赖项注入(DI)引起的。要解决此问题,请确保每个控制器都有一个无参数的构造函数,并将所需的服务添加到注入容器中。
例如,如果您的控制器需要访问数据库上下文,您需要在启动文件中将数据库上下文注册为服务,并在控制器构造函数中注入它。
Startup.cs文件示例:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllersWithViews();
}
控制器示例:
public class ExampleController : Controller
{
private readonly ApplicationDbContext _dbContext;
public ExampleController(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
}
// Action methods...
}