现有的Umbraco Umbraco v6.0.5站​​点抛出没有为此对象定义的无参数构造函数

时间:2013-10-24 19:58:54

标签: c# asp.net-mvc dependency-injection ninject umbraco

我已经建立了现有的Umbraco v6.0.5(汇编版本:1.0.4869.18012)网站。

前几天我有一台新电脑,直到现在,我所有的.NET项目都运行良好。

我已经在Umbraco网站上加载了相同的代码,该网站已经在我的旧PC上以生产。

网站现在抛出:没有为此对象定义的无参数构造函数当我点击一个继承的控制器: RenderMvcController

是的,这个控制器没有无参数构造函数,因为我使用ninject将接口注入以下代码:

public SignupController(ISignupManager signupManager)
{
    _signupManager = signupManager;
}

正如我所说,这段代码之前没有任何变化,因为我刚刚从我的SVN回购中检查了工作代码。

任何想法都会很棒。要记住的事情:

  • 我有一台新机器,我正在运行我在旧机器上使用的所有相同工具
  • 代码经过验证的工作代码
  • 我使用的是Umbraco v6.0.5(汇编版本:1.0.4869.18012)
  • CMS和内容及模板等来自实时数据库的副本,所以它们都是一样的。

我在想,或许我可能会遗漏一些umbraco需要的东西,或者我的依赖注射没有被解雇。

这是我的堆栈跟踪:

at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func`1 func)
at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride)
at System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage)
at System.Web.HttpServerUtilityWrapper.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm)
at System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues, TextWriter textWriter)
at System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues)
at ASP._Page_Views_Donate_cshtml.Execute() in d:\Projects\Biggest Game Of Cricket\trunk\Umbraco\Views\Donate.cshtml:line 9
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)

提前感谢您的帮助。

拉​​斯

2 个答案:

答案 0 :(得分:2)

如果代码完全相同,那么这将是一个机器配置问题。你是否安装了MVC3和MVC4?

然而,听起来确实没有正确注册。我知道你说这是一个新鲜/干净的结账,但这并不一定意味着所有必须签到的一切都已登记:)

我会检查项目之间是否存在相同的bin文件夹内容,以及两个项目中的依赖项注册代码是否存在/正确。您的global.asax文件可能没有使用Ninject注册码或者使用不正确。

这是否意味着缺少DLL引用(例如MVC4)或者global.asax标记是否继承自from class。

答案 1 :(得分:0)

问题是Ninject.Web.MVC DLL是我本地的错误版本。我花了一整天才找到这个。 thansk @Digbyswift