控制器与自定义基本控制器不工作

时间:2015-12-24 11:34:05

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

更新

试图澄清我的问题

我有一个ASP.NET 5 Web Api应用程序。我正在尝试创建一个使用自定义基本控制器的控制器类。一旦我将构造函数添加到基本控制器,MVC就无法再找到Get()类中定义的Generic端点。

这有效:

当我导航到/api/person时,Get()类中定义的Generic终点被触发

通用:

public class Generic
{
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

PersonController

[Route("api/[controller]")]
public class PersonController : Generic
{
}

这不起作用 当我导航到/api/person时,Get()终点被触发。唯一添加的是Generic类和PersonController类中的构造函数。

public class Generic
{
    protected DbContext Context { get; set; }

    public Generic(DbContext context)
    {
        Context = context;
    }

    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

PersonController

[Route("api/[controller]")]
public class PersonController : Generic
{
    public PersonController(DbContext context) : base(context) { }
}

这是一个错误还是我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的问题与从其他基类继承无关。我认为问题是,DbContext的正确实现没有被注入到构造函数中。由于asp.net 5是如此模块化/依赖注入,您需要明确配置它。

在Startup.cs类的ConfigureServices方法中,注册您的DbContext服务,以便MVC使用它并在需要时将其注入您的类控制器。

public void ConfigureServices(IServiceCollection services)
{
    services.AddEntityFramework()
        .AddDbContext<DbContext>();

    services.AddMvc();
}