我得到这个错误
尝试创建“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);
}
}
5条答案
按热度按时间efzxgjgh1#
这取决于您如何处理DI(依赖注入)。默认情况下,控制器需要无参数的构造函数,你必须使用Unity或Ninject来处理DI。我看到你从ApiController继承,所以如果你使用Ninject,请确保下载Ninject for Web API。如果你已经知道我刚才告诉你的一切,那么你需要给予更多的信息。你的计划是什么你用什么做DI?
cgyqldqp2#
我得到这个错误是因为我在我的参数化构造函数中发生了一个异常。尽管有错误消息,但它与要求无参数构造函数无关。
xdyibdwo3#
添加一个公共的无参数构造函数,问题就解决了:
waxmsbnn4#
我不知道这是否会帮助其他人。我构建并运行我的应用程序对Web服务都在我的本地(开发)框。然后,在部署到生产环境之前,我运行指向现有生产Web服务的应用程序。这通常是有效的,但这一次,它在“开发”中有效,但给了我这个“确保控制器在生产中有一个无参数的公共构造函数”错误消息(好吧,不是真的在生产中,而是针对生产Web服务)。
这些解决方案似乎都不是我的代码的问题,当我将代码部署到生产环境中时,我没有得到这个错误。我的猜测是,这可能与我的开发盒和生产之间的不同版本的NuGet包有关。我会调查,我只是想提供这一点,以防其他人有类似的“工程对开发,但不刺激”的情况。这可能是一个环境问题(取决于你所说的“在生产中”不工作是什么意思)。
vxqlmq5t5#
对我来说,我已经完成了一个依赖项的双重注册,如下所示: