我创建了一个空的 Asp.Net MVC3 项目,并使用 nugetinstall-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()
[目标调用异常:异常
已被目标投掷
调用。]
System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo
方法、对象目标、对象[]
参数、SignatureStruct& sig、
MethodAttributes 方法属性,
RuntimeType typeOwner) +0
System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo
方法、对象目标、对象[]
参数、签名 sig、
MethodAttributes 方法属性,
运行时类型(类型所有者)+72
System.Reflection.RuntimeMethodInfo.Invoke(对象
obj、BindingFlags invokeAttr、Binder
绑定器,Object[] 参数,
CultureInfo 文化,布尔值
跳过可见性检查)+335
System.Reflection.RuntimeMethodInfo.Invoke(对象
obj、BindingFlags invokeAttr、Binder
绑定器,Object[] 参数,
文化信息文化)+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 的旧(几周)包中,所以也许在最近的更新中还有其他东西被破坏了?
请帮忙!
编辑以解决雷莫的答案
这是来自我的 global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
global.asax 也是 100% 标准的。没有进行任何调整。
编辑-问题消失了...
老实说,我不知道是什么原因造成的,但是在重新启动 Visual Studio 几次并完全重新启动后,该项目就可以正常工作了。我也无法在新项目中重现该问题。
抱歉浪费了您的时间:)