3

我刚刚从 NuGet 更新了我安装的项目,并在运行时得到了以下未处理的异常:

无法加载文件或程序集 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

NinjectWebCommon 引发了异常。bootstraper.Initialize(CreateKernel); 代码行是罪犯。

 public static void Start()
 {
     DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
     DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
     bootstrapper.Initialize(CreateKernel);
 }

我假设 Ninject 可能对旧版本的 System.Web.Http 有依赖关系,但如果我不需要,我不想回滚。

有没有人遇到过这个问题并解决了?

编辑

似乎有问题的代码在 bootstrapper.Initialize() 方法中:

private static IKernel CreateKernel()
{
    var kernel = new StandardKernel();
    kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
    kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

    RegisterServices(kernel);

    // Set Web API Resolver (using WebApiContrib.Ioc.Ninject)
    GlobalConfiguration.Configuration.DependencyResolver = new NinjectResolver(kernel);

    return kernel;
}

当我注释掉现有注释下的代码行时,项目运行良好。需要弄清楚如何在没有 WebApiContrub.IoC.Ninject 的情况下让 WebApi 工作......

4

1 回答 1

9

听起来您正在使用没有程序集绑定重定向的 Web API2

<dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
于 2013-10-29T11:47:58.523 回答