我刚从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工作......
答案 0 :(得分: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>