我试图了解如何在MVC 3中构建Html Helpers。所以我下载了MVC 3源代码并在同一个解决方案中添加了另一个项目来调试它。
我按照这个步骤。
从我的MVC应用程序中删除了System.web.Mvc引用
为调试添加了System.web.Mvc源代码项目参考。
在Web.config System.Web.Mvc中,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31BF3856AD364E35 to System.Web.Mvc
但我在我的NInject
3应用程序中添加了其他NInject
(NInject.web.common
,WebActivator
,Microsoft.web.infrastructure
,MVC
)引用注射。
现在我在System.Web.MVC
来源中收到错误信息 'An error occurred when trying to create a controller of type 'MVCApp.Controllers.HomeController'. Make sure that the controller has a parameterless public constructor.
,位于以下MVC
源代码
public IController Create(RequestContext requestContext, Type controllerType)
{
try
{
return (IController)(_resolverThunk().GetService(controllerType)
?? Activator.CreateInstance(controllerType));
}
catch (Exception ex)
{
throw new InvalidOperationException(
String.Format(CultureInfo.CurrentCulture,
MvcResources.DefaultControllerFactory_ErrorCreatingController, controllerType),
ex);
}
}
检查 DependencyResolver.Current 属性说 DependencyResolver.Current类型 两者中都存在'System.Web.Mvc.DependencyResolver' 'System.Web.Mvc.dll'和'System.Web.Mvc.dll'
为了使用MVC3源代码调试我的MVC3App还需要做些什么?我怎么能避免这个错误?
答案 0 :(得分:1)
看一下这个解决方案:Ninject + MVC3 is not injecting into controller
将其添加到Web.config
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="4.0.0.0" />
<bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0" />
<!-- The following line was missing -->
<bindingRedirect oldVersion="3.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
它解决了这个问题:
检查DependencyResolver.Current属性说 DependencyResolver.Current类型 两者中都存在'System.Web.Mvc.DependencyResolver' 'System.Web.Mvc.dll'和'System.Web.Mvc.dll'
干杯。