确保控制器具有无参数的公共构造函数

Gib*_*boK 11 .net c# asp.net-mvc asp.net-mvc-4

我收到这个错误

尝试创建"AnalyticController"类型的控制器时发生错误.确保控制器具有无参数的公共构造函数.

代码在测试环境中工作,但在生产服务器上不工作.

知道什么可能导致问题吗?

这是我的控制器

public class AnalyticController : ApiController
{
    private AnalyticBLL analyticBLL = new AnalyticBLL();

    // POST api/status
    public void Post(AnalyticDTO analyticDTO)
    {
        if (!analyticBLL.Register(analyticDTO))
            helpers.BusinessLayer.CreateResponseException(analyticBLL.Errors);   
    }
}
Run Code Online (Sandbox Code Playgroud)

Pha*_*lon 13

这取决于你如何处理DI(依赖注入).默认情况下,控制器需要无参数构造函数,您必须使用Unity或Ninject之类的东西来处理DI.我发现你是从ApiController中获取的,所以如果你正在使用Ninject,请确保你下载Ninject for Web API.如果您已经知道我刚刚告诉您的所有内容,那么您需要提供更多信息.你的设置是什么?DI你用的是什么?


Dom*_*icz 6

添加一个公共无参数构造函数,问题消失了:

public class AnalyticController : ApiController
{
   public AnalyticController()
   {
   }

   // Variables and methods are the same as before
}
Run Code Online (Sandbox Code Playgroud)


use*_*499 5

我收到此错误的原因是在参数完整的构造函数中发生异常。尽管有错误消息,但它与要求无参数的构造函数无关。