【发布时间】:2013-12-20 12:18:52
【问题描述】:
更新
开始赏金,我添加了一个复制 Ninject 错误的 Visual Studio 2010 解决方案,因为这似乎是一个相当本地化的问题。
当我执行以下操作时:
启动 Visual Studio 2010(是 2010 :-( )
文件 > 新项目 > 空 MVC 4 应用程序
管理包 > 安装包 Ninject.Web.Common(然后安装 Ninject 和 Ninject.Mvc)
然后在 HomeController 中执行以下操作
代码:
public class HomeController : Controller
{
public HomeController(IKernel kernel)
{
// Should have been injected
}
}
我明白了:
Server Error in '/' Application.
No parameterless constructor defined for this object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.MissingMethodException: No parameterless constructor defined for this object.
Stack Trace:
[MissingMethodException: No parameterless constructor defined for this object.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +113
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +232
System.Activator.CreateInstance(Type type, Boolean nonPublic) +83
System.Activator.CreateInstance(Type type) +6
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +55
[InvalidOperationException: An error occurred when trying to create a controller of type 'NinjectTest.Controllers.HomeController'. Make sure that the controller has a parameterless public constructor.]
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +179
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80
System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +74
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +197
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +49
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +50
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +301
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
当我查看DependencyResolver 是什么时,我看到了这个:
当我对 VS 2013 Express 实例执行相同操作并创建新的 MVC 4 空 Web 应用程序时,我看到 DependencyResolver 是 Ninject 的。
我确实有一个可运行的 VS 2010 解决方案,但所有外部文件存储站点都在我的工作场所被阻止,所以我稍后会链接它,如果在此期间有人有任何想法......
与此同时,我的解决方案是手动连接解析器,但我不应该这样做。
【问题讨论】:
-
请不要打印您的例外情况,但请以文本形式包含完整的例外情况详细信息。这样更容易阅读,并允许您的问题被 Google 索引。这样其他人就可以从您的问题中受益。
-
好点我会更新问题,谢谢。
标签: c# asp.net-mvc asp.net-mvc-4 ninject ninject.web.mvc