Yng*_*sen 35 .net c# ninject asp.net-mvc-3
我创建了一个空的Asp.Net MVC3项目,并使用了nuget install-package Ninject.MVC3
没有做任何其他事情(没有注册服务,甚至没有创建控制器)我运行应用程序.
项目在NinjectMVC3.cs的第22行中断,但有以下异常:
[InvalidOperationException:已经初始化!] Ninject.Web.Mvc.Bootstrapper.Initialize(Func`1 createKernelCallback)在c:\ Projects\Ninject\Maintenance2.2 \ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\Bootstrapper.cs>:58 Mvc.App_Start.NinjectMVC3.Start()在c:\ Projects\Events\Events\App_Start\NinjectMVC3.cs:22
[TargetInvocationException:调用目标抛出了异常.]
System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo方法,Object target,Object []参数,SignatureStruct&sig,MethodAttributes methodAttributes,RuntimeType typeOwner)+0
System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo)方法,Object target,Object [] arguments,Signature sig,MethodAttributes methodAttributes,RuntimeType typeOwner)+72
System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object [] parameters,CultureInfo culture,Boolean skipVisibilityChecks)+ 335
System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object [] parameters,CultureInfo culture)+28
System.Reflection.MethodBase.Invoke(Object obj,Object [] parameters)+19
WebActivator.BaseActivationMethodAttribute. InvokeMethod()+199 WebActivator.ActivationManager.RunActivationMethods()+330 WebActivator.ActivationManager.R unPreStartMethods()+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...
}
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?我已经在其他项目中使用Ninject for MVC3而没有任何问题.我注意到Start()方法中的第二行没有包含在Ninject.MVC3的旧(周)包中,所以也许在最近的更新中还有其他东西被打破了?
请帮忙!
编辑以解决雷莫的回答
这是来自我的global.asax.cs
public class MvcApplication : System.Web.HttpApplication
{
Run Code Online (Sandbox Code Playgroud)
global.asax也是100%的标准.没有做任何调整.
编辑 - 问题消失了......
老实说,我不知道是什么造成了这种情况,但经过几次重启Visual Studio并完全重启后,该项目正在按原样运行.我也不能在新项目中重新创建问题.
抱歉浪费你的时间:)
And*_*rew 33
简而言之:
您可能App_Start在项目中有一个带NinjectMVC3.cs文件的een 文件夹.
将NuGet包与修改Global.asax(没有理由)结合使用时,必须删除该App_Start文件夹并删除对WebActivator和Microsoft.Web.Infrastructure的引用
Bal*_*ldy 16
当我更改项目的命名空间,然后再将其切换回来时,这种情况出现了.
即使我清理了解决方案并做了一个iisreset它回来了'已经初始化'.
当我更改命名空间并构建项目时,问题产生于bin目录中创建的dll - 在更改命名空间并清理解决方案后,替代命名空间中的dll仍然存在,因此在加载时Web应用程序启动,导致"已初始化"错误.
删除dll修复了问题.
Rem*_*oor 12
您很可能是从NinjectHttpApplication派生并同时使用AppStart.这两种方式不应混淆.
阅读文档https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application
小智 5
我最近遇到了同样的问题。就我而言,我的解决方案中有多个项目……其中一个项目包含对 Ninject.MVC3 的 NuGet 包引用。
当我更新我的所有 Ninject 包版本时,App_Start 文件夹在所有具有 NuGet 引用的项目上创建。所以,我不得不从类库项目中删除 App_Start 文件夹;只需将 App_Start 文件夹留在主 MVC 应用程序上。
问题消失了...
老实说,我不知道是什么原因造成的,但是在重新启动 Visual Studio 几次并完全重新启动后,该项目就可以正常工作了。我也无法在新项目中重现该问题。
抱歉浪费了您的时间:)
更新
自从发布这个答案以来,已经出现了一些好的答案。我正在更新此答案,以将不同的方法收集到一个答案中。希望你们没问题:
DevilDog74已回复
最后我去了 gitub 并克隆了一个新的存储库,下载了最新的 Ninject.Web.Common 和最新的 Ninject2 发行版本,并进行了本地发行版本。然后我放弃了 nuget 包并对新编译的 > 程序集“Ninject”、“Ninject.Web.Common”和“Ninject.Web.Mvc”进行了程序集引用,我的项目开始了 > 工作并创建了控制器,其依赖项为解决。
杰夫·西尔切奥回答了
我通过从https://github.com/ninject/ninject.web.mvc下载 而不是使用 nuget 包解决了该问题 。添加参考文献后,我无需执行任何操作。
马库斯·金回答
最终对我有用的是完全删除 Ninject MVC NuGet 包,然后以老式方式添加 Ninject 和 Ninject dll。我认为他们的 NuGet 包可能有问题。
| 归档时间: |
|
| 查看次数: |
10913 次 |
| 最近记录: |