当我明显有一个时,控制器抛出“需要无参数构造函数”错误

时间:2013-11-25 21:38:25

标签: c# asp.net asp.net-web-api .net-4.5

我最近刚刚将我的项目从VS2010和.NET 4.0升级到VS2013和.NET 4.5.1

在解决了大多数软件包的许多其他程序集引用和依赖性问题后,我无法让我的控制器继续工作。这是我得到的堆栈跟踪错误:

ExceptionMessage=An error occurred when trying to create a controller of type 'ExamplesController'. Make sure that the controller has a parameterless public constructor. 

从我在其他地方读到的内容,这是一个常见问题,尽管在升级到.NET 4.5.1和Web Api 2之前,我从未在任何构造函数中使用无参数构造函数。

以下是我将控制器更改为:

 public class ExamplesController : ApiController
{

    static readonly IVehicleRepository repository = new ExampleRepository();

    public ExamplesController() {}

    // GET api/v1/examples
    public HttpResponseMessage GetExamples()

    //etc etc

然而,当我尝试在此控制器上进行测试时,我仍然遇到上述错误。

这里还有什么可以发生的。我的Web.config中的东西?

谢谢。

编辑:

这是StackTrace,它伴随着我的Response标题中的最大错误:

StackTrace=  at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
   at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()

EDIT2: 当我尝试构建项目时,这将出现在我的错误列表中:

Warning 2   Found conflicts between different versions of the same dependent assembly that could not be resolved.  These reference conflicts are listed in the build log when log verbosity is set to detailed. TrackStarServices
Error   1   'System.Web.Http.GlobalConfiguration' does not contain a definition for 'Configure' C:\Projects\AVLS-Web-Services\TrackStarServices\Global.asax.cs  21  33  TrackStarServices

如果有人想看到它的任何部分,我有构建日志(它很大)。

好的,在修复引用并重新安装软件包之后,我认为主要原因是EntityFramework的目标是版本6.0.0.1而不是6.0.0.0。

刚刚更改为引用顶级版本,现在所有控制器都正常工作。浪费一天。谢谢大家。

1 个答案:

答案 0 :(得分:1)

升级时我遇到过类似的问题。它通常是我的Web.Config文件中的程序集的混合版本。

试试此链接:http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

它可能不是相同的升级,但它显示了查找错误的位置。