委托类型 System.Delegate 的方法 System.Reflection.MethodInfo.CreateDelegate(System.Type)

4
据我所知,当Ninject和站点包的目标版本都是4.x且不匹配时,就会出现此错误。我已经检查过我的计算机,它们是匹配的-都是4.0。
我刚刚花了一些时间更新了项目中的所有Nu-Get包。在此之前,没有出现这个错误。
我该如何消除这个错误?
以下是完整的错误输出:
enter code here

'/' 应用程序中的服务器错误。

方法未找到:'System.Reflection.MethodInfo.CreateDelegate(System.Type)'。 说明:当前 Web 请求执行期间发生了未经处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及在代码中的起源。

异常详细信息:System.MissingMethodException:方法未找到:'System.Delegate System.Reflection.MethodInfo.CreateDelegate(System.Type)'。

Source Error: 


Line 29:             DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
Line 30:             DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
Line 31:             bootstrapper.Initialize(CreateKernel);
Line 32:         }
Line 33: 


Source File: C:\My Documents\Alcon_DEV\SecurityMasterData\Dev\Alcon.SecurityMasterData.WebUI\App_Start\NinjectWebCommon.cs    Line: 31 

Stack Trace: 


[MissingMethodException: Method not found: 'System.Delegate System.Reflection.MethodInfo.CreateDelegate(System.Type)'.]
   Ninject.Injection.DynamicMethodInjectorFactory.Create(ConstructorInfo constructor) in c:\Projects\Ninject\ninject\src\Ninject\Injection\DynamicMethodInjectorFactory.cs:48
   Ninject.Planning.Strategies.ConstructorReflectionStrategy.Execute(IPlan plan) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Strategies\ConstructorReflectionStrategy.cs:67
   Ninject.Planning.<>c__DisplayClass1.<CreateNewPlan>b__0(IPlanningStrategy s) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Planner.cs:109
   Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable`1 series, Action`1 action) in c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Language\ExtensionsForIEnumerableOfT.cs:32
   Ninject.Planning.Planner.CreateNewPlan(Type type) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Planner.cs:109
   Ninject.Planning.Planner.GetPlan(Type type) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Planner.cs:71
   Ninject.Activation.Providers.StandardProvider.Create(IContext context) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs:77
   Ninject.Activation.Context.Resolve() in c:\Projects\Ninject\ninject\src\Ninject\Activation\Context.cs:157
   Ninject.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:386
   System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +151
   System.Linq.<CastIterator>d__b1`1.MoveNext() +92
   System.Linq.Enumerable.Single(IEnumerable`1 source) +196
   Ninject.ResolutionExtensions.Get(IResolutionRoot root, IParameter[] parameters) in c:\Projects\Ninject\ninject\src\Ninject\Syntax\ResolutionExtensions.cs:37
   Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.CreateDependencyResolver() in c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectMvcHttpApplicationPlugin.cs:83
   Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.Start() in c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectMvcHttpApplicationPlugin.cs:54
   Ninject.Web.Common.Bootstrapper.<Initialize>b__0(INinjectHttpApplicationPlugin c) in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs:52
   Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable`1 series, Action`1 action) in c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Language\ExtensionsForIEnumerableOfT.cs:32
   Ninject.Web.Common.Bootstrapper.Initialize(Func`1 createKernelCallback) in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs:52
   Alcon.SecurityMasterData.WebUI.App_Start.NinjectWebCommon.Start() in C:\My Documents\Alcon_DEV\SecurityMasterData\Dev\Alcon.SecurityMasterData.WebUI\App_Start\NinjectWebCommon.cs:31

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) +0
   System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, 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
   WebActivatorEx.BaseActivationMethodAttribute.InvokeMethod() +241
   WebActivatorEx.ActivationManager.RunActivationMethods(Boolean designerMode) +611
   WebActivatorEx.ActivationManager.RunPreStartMethods(Boolean designerMode) +50
   WebActivatorEx.ActivationManager.Run() +80

[InvalidOperationException: The pre-application start initialization method Run on type WebActivatorEx.ActivationManager threw an exception with the following error message: Exception has been thrown by the target of an invocation..]
   System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +423
   System.Web.Compilation.BuildManager.CallPreStartInitMethods() +306
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +591

[HttpException (0x80004005): The pre-application start initialization method Run on type WebActivatorEx.ActivationManager threw an exception with the following error message: Exception has been thrown by the target of an invocation..]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9010364
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +256

版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.1


看起来这个函数只存在于4.5版本中。所以即使针对此版本的属性显示为4.0.3,它实际上是针对4.5版本的? - rkralston
我从另一个位置重新复制了Ninject、Ninject MVC和Ninject ASP。由于某种原因,它正在调用4.5库。已修复。 - rkralston
1个回答

4

在 .net 4.5 中不存在该方法 - 在那之前,应该使用 Delegate.CreateDelegate 方法。听起来可能是 NInject 在 4.0 的 nuget 包中错误地使用了该方法,如果是这样的话,您应该将其报告为 NInject 中的 bug。

首先要做的是检查您是否正在使用正确版本的 dll,即具体的 4.0 构建。

之后,可以选择以下其中一项:

  • 回滚到早期的 NInject 版本
  • 升级您的 .net framework 版本
  • 下载代码,进行修复并提交补丁

请注意我上面的注释。实际上问题在于4.5和4.0的差异。 - rkralston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接