2015-12-25 5 views
15

を呼び出した後System.Web.Corsアセンブリをロードできません。 Specific VersionプロパティはFalseに設定されています。パスは、ローカルプロジェクトのbinフォルダです。ファイルエクスプローラから.dllプロパティをチェックするとき、ファイルの製品バージョンとファイルバージョン。 5.2.3である。は<code>Version</code>は<strong>5.2.3.0</strong>で、Microsoft.Owin.Cors

マイのWeb.config

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Cors" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
</dependentAssembly> 

マイpackages.config(私は面倒な組み立てがMicrosoft.AspNet.WebApi.Corsだと思うが、私は似た名前で、ここで別のものを含む):

<package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net452" /> 
<package id="Microsoft.AspNet.WebApi.Cors" version="5.2.3" targetFramework="net452" /> 

エラーがStartup.cs

012でこのラインにスローされます
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); 

はここで完全なエラーです:

System.IO.FileLoadException was unhandled by user code 
    FileName=System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
    FusionLog==== Pre-bind state information === 
LOG: DisplayName = System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
(Fully-specified) 
LOG: Appbase = file:///P:/project-z4a/project-z4a/ 
LOG: Initial PrivatePath = P:\project-z4a\project-z4a\bin 
Calling assembly : Microsoft.Owin.Cors, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: P:\project-z4a\project-z4a\web.config 
LOG: Using host configuration file: D:\Documents\IISExpress\config\aspnet.config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
LOG: Attempting download of new URL file:///C:/Users/*****/AppData/Local/Temp/Temporary ASP.NET Files/root/f8163156/5c96d267/System.Web.Cors.DLL. 
LOG: Attempting download of new URL file:///C:/Users/*****/AppData/Local/Temp/Temporary ASP.NET Files/root/f8163156/5c96d267/System.Web.Cors/System.Web.Cors.DLL. 
LOG: Attempting download of new URL file:///P:/project-z4a/project-z4a/bin/System.Web.Cors.DLL. 
WRN: Comparing the assembly name resulted in the mismatch: Minor Version 
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 

    HResult=-2146234304 
    Message=Could not load file or assembly 'System.Web.Cors, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
    Source=Microsoft.Owin.Cors 
    StackTrace: 
     at Microsoft.Owin.Cors.CorsOptions.get_AllowAll() 
     at z4a_dsa.Startup.Configuration(IAppBuilder app) in P:\project-z4a\project-z4a\Startup.cs:line 23 
    InnerException: 

だから、私はそれがv5.0.0.0を期待しています見ることができますが、どこどこか、このバージョンを呼びかけ、なぜ私が見ることができません。

私はこのエラーをデバッグするには、次の手順を行ってきました。リストされたそれぞれの試行の後、私はきれいにしてから、プロジェクトを再構築しました。これらの各手順を試しても、エラーは変更されていません。その後、

  • Update-Package
  • Install-Package Microsoft.AspNet.WebApi.Cors
  • Uninstall-Package Microsoft.AspNet.WebApi.Cors、その後、Install-Package Microsoft.AspNet.WebApi.Cors
  • Uninstall-Package Microsoft.AspNet.WebApi.CorsInstall-Package Microsoft.AspNet.WebApi.Cors -Version 5.2.3
  • パッケージマネージャウィンドウを経由してv5.0.0.0からMicrosoft.AspNet.WebApi.Corsをダウングレード。

私は、.NETの専門家ではないよ、まだ、私がチェックWeb Api新鮮な空のプロジェクトを開始して以来、これは、毎回異なるアセンブリと同じ正確なエラーの第4回発生しています。私はz4a-foundation-scaffold-authパッケージを私のプロジェクトにインストールしました。私は間違いなくここに知識のギャップについての説明をありがとう!

EDITMicrosoft.Owin.Corsを見るためにILDASM.exeを使用しました。それがマニフェスト定義にSystem.Web.Cors v5.0.0.0と指定されています。私は今、私の質問はこれをどのように修正するのだろうと思いますか?

+0

Ildasm.exeを持つ他の依存DLLファイルを確認してください。 System.Web.Cors v5.0.0.0 – yyou

+0

を必要とする少なくとも1つのdllファイルが存在する必要があります。したがって、 'Microsoft.Owin.Cors'マニフェストには' System.Web.Cors v5.0.0.0'が必要です。私はこれにどのように対処できますか? –

+1

System.Web.Corsのweb.configにリダイレクトされたアセンブリバインディングを追加しましたか?基本的には、すべてのバージョンをメインアプリケーションにインストールした最新のものにリダイレクトするだけです。 https://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx – HackedByChinese

答えて

23

が表示されますSystem.Web.Cors.dllMicrosoft.AspNet.WebApi.Corsパッケージからのものではありません。それはMicrosoft.AspNet.Corsパッケージから来ます。

Install-Package Microsoft.AspNet.Cors -Version 5.0.0 

これにより、即時エラーが解決されました。バージョンを変更し、パッケージマネージャを使用して

  1. :あなたはSystem.Web.Cors.dllの2つの異なるバージョンを必要とするシナリオを持っている場合は

    、私はこのソリューションをお勧めしたいですMicrosoft.AspNet.Corsをマニフェスト定義のMicrosoft.Owin.Cors要求に対応するバージョンに置き換えます。

  2. Visual Studio用の開発者コマンドプロンプト(管理者として実行)を使用して、* System.Web.Cors.dll **が存在する新バージョンのMicrosoft.AspNet.Corsのパッケージフォルダに移動します。
  3. 次のコマンドを実行します。gacutil -i System.Web.Cors.dll
  4. パッケージマネージャーに戻ってMicrosoft.AspNet.Corsを元のバージョンに戻してください。

この方法では、必要なバージョンの.dllファイルをソリューションのパッケージフォルダにプルするだけです。次に、gacutil.exeを使用して、このバージョンの.dllをグローバルアセンブリキャッシュに追加します。 Visual Studioは最初にGACで目的の.dllバージョンを探し、次にローカルプロジェクトで探します。

+6

パッケージが既にインストールされていることを除いて、同じ問題が発生しました。あなたの答えを見た後、 'Update-Package -reinstall Microsoft.AspNet.Cors'で修正しました。 –

+1

@Mike、あなたの解決策が私の問題を解決してくれてありがとう –

2

実行PMにこのコマンド(パッケージマネージャ)

インストール・パッケージMicrosoft.AspNet.Cors -Version 5.2.3.0

関連する問題