0

我有一个我建立的现有 Umbraco v6.0.5(Assembly 版本: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)

提前感谢您的帮助。

俄罗斯

4

2 回答 2

2

如果代码完全一样,那就是机器配置问题。您是否同时安装了 MVC3 和 MVC4?

但是,听起来确实有些东西没有正确注册。我知道您说这是一次全新/干净的结帐,但这并不一定意味着所有需要的东西都已签入:)

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

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

于 2013-10-25T09:50:31.337 回答
0

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

于 2013-10-29T03:42:29.177 回答