没有无参数构造函数,结构图,新区域

时间:2011-12-07 21:58:23

标签: asp.net-mvc compiler-errors structuremap asp.net-mvc-areas

我知道错误“没有为此对象定义的无参数构造函数”已被问过一百万次。我的情况不同

我有一个有用的应用程序。许多控制器和一个有很多控制器的区域。我刚刚添加了一个新区域。我添加了一个控制器,然后是该控制器的链接。现在我得到了 “没有为此对象定义无参数构造函数”错误

我之前已经看到并克服了这个问题,但它实际上只发生在每5个月一次。每次我完全忘记(压抑)答案。

请帮忙

Raif

2 个答案:

答案 0 :(得分:9)

好的,似乎有几个原因可能会导致此错误。毫不奇怪,他们都没有@#$%与没有无参数构造函数有关。我知道的两个是

1)如果您正在使用某个区域,并且您将控制器从一个名称空间移动到新名称空间,并且不更新名称空间以反映您将收到此错误的区域。

2)这就是我现在的情况,如果你在控制器的构造函数中注入一些东西并且你注入的项目有问题(没有实例化,或者它没有在你的IOC注册中注册或者一些其他运行时错误)您将收到此错误。

如果人们可以想到别人,他们应该在这里列出,因为我认为还有其他几个原因导致错误。 [R

答案 1 :(得分:0)

虽然我意识到这并没有真正回答你的问题,但你的答案在我的故障排除工作中帮助了我。

我最近在使用MVC Contrib项目中的MVC Portable Area时遇到了同样的问题。我发现在IOC注册期间扫描组件时,必须还包括便携式区域所具有的任何dll依赖性,这类似于:

ObjectFactory.Initialize(x => x.Scan(y =>
    {
        y.Assembly("PortableAreaAssemblyName");
    }));
ObjectFactory.Configure(x =>
    {
        x.For<IClassInterfaceUsedByControllerConstructor>().Use<IntendedClassInstance>();
    });