3

NuGet からインストール済みのプロジェクトを更新したところ、実行時に以下の未処理の例外が発生しました。

ファイルまたはアセンブリ 'System.Web.Http、Version=4.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)

例外は NinjectWebCommon からスローされました。ブートストラップ.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 に答える