【发布时间】:2011-08-20 02:28:45
【问题描述】:
我创建了一个空的 Asp.Net MVC3 项目,并使用了 nuget install-package Ninject.MVC3
没有做任何其他事情(没有注册服务,甚至没有创建控制器)我运行应用程序。
项目在 NinjectMVC3.cs 的第 22 行中断,但有以下例外:
[InvalidOperationException:已经初始化!] C:\Projects\Ninject\Maintenance2.2\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\Bootstrapper.cs> 中的 Ninject.Web.Mvc.Bootstrapper.Initialize(Func`1 createKernelCallback):58 C:\Projects\Events\Events\App_Start\NinjectMVC3.cs:22 中的 Mvc.App_Start.NinjectMVC3.Start()
[TargetInvocationException:异常 被一个目标抛出 调用。]
System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo 方法,对象目标,对象[] 参数,SignatureStruct& sig, 方法属性方法属性, RuntimeType typeOwner) +0
System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo 方法,对象目标,对象[] 参数,签名签名, 方法属性方法属性, RuntimeType typeOwner) +72
System.Reflection.RuntimeMethodInfo.Invoke(对象 obj、BindingFlags、invokeAttr、Binder 活页夹,Object[] 参数, CultureInfo 文化,布尔值 跳过可见性检查)+335
System.Reflection.RuntimeMethodInfo.Invoke(对象 obj、BindingFlags、invokeAttr、Binder 活页夹,Object[] 参数, CultureInfo 文化)+28
System.Reflection.MethodBase.Invoke(对象 obj, Object[] 参数)+19
WebActivator.BaseActivationMethodAttribute.InvokeMethod() +199 WebActivator.ActivationManager.RunActivationMethods() +330 WebActivator.ActivationManager.RunPreStartMethods() +27 WebActivator.ActivationManager.Run() +39
NinjectMVC3.cs 中的行是:
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule));
bootstrapper.Initialize(CreateKernel); // <- this one right here...
}
这是怎么回事?我在其他项目中使用 Ninject for MVC3 完全没有问题。我确实注意到 Start() 方法中的第二行不包含在 Ninject.MVC3 的旧(几周)包中,所以最近的更新中可能还有其他问题?
请帮忙!
编辑以解决来自 Remo 的答案
这是来自我的 global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
global.asax 也是 100% 标准的。未进行任何调整。
编辑 - 问题消失了...
老实说,我不知道是什么原因造成的,但是在几次重新启动 Visual Studio 并完全重新启动后,该项目可以正常运行。我也不能在新项目中重现问题。
抱歉浪费您的时间:)
【问题讨论】:
-
不太确定如何处理这个问题,因为可能没有正确答案。我是标记它,关闭它还是什么?
-
您可以选择最有帮助的答案,也可以自己回答并详细说明您所做的事情(本质上是您的编辑)。看起来很奇怪,但这就是通常的处理方式。
标签: c# .net asp.net-mvc-3 ninject