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

我收到这个错误

尝试创建“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); } } 

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

 public class AnalyticController : ApiController { public AnalyticController() { } // Variables and methods are the same as before } 

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

我收到此错误是因为我在参数-ful构造函数中发生了exception。 尽管有错误消息,它与要求无参数构造函数无关。

不知道这是否会对其他人有所帮助。 我构建然后在我的本地(开发)框中运行我的应用程序对抗Web服务。 然后在我部署到生产之前,我运行我的应用程序指向现有的生产Web服务。 这通常有效,但这一次,它在“开发”工作,但给了我“确保控制器有一个无参数的公共构造函数”错误消息“在生产中”(好吧,不是真正的生产,但对生产Web服务) 。

这些解决方案似乎都不是我的代码的问题,当我将我的代码部署到生产时,我没有得到这个错误,当它全部投入生产。 我的猜测是它可能与我的开发盒和生产之间的不同版本的NuGet包有关。 我会调查一下,但我只想提供这个,以防其他人有类似的“反对开发而不是刺激”的情况。 这可能是一个环境问题(取决于你的意思是什么不起作用“prod”)。