2012から2013に更新した後、ファイルまたはアセンブリ 'System.Web.Http 4.0.0をロードできませんでした


183

と私はアップグレードを行いました。 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and- web-api-2

エラーが発生します。他の誰かがこのエラーを受け取りましたか?

「/」アプリケーションでのサーバーエラー。

ファイルまたはアセンブリ 'System.Web.Http、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULTからの例外:0x80131040)
説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーの詳細と、エラーがコードのどこで発生したかについては、スタックトレースを確認してください。

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

ソースエラー:

48行目:49行目:50行目:} 51行目:52行目:protected void Application_BeginRequest(object sender、EventArgs e)

ソースファイル:d:\ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ Global.asax.cs行:50

アセンブリロードトレース:次の情報は、アセンブリ 'System.Web.Http、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'をロードできなかった理由を特定するのに役立ちます。

===バインド前の状態情報===ログ:DisplayName = System.Web.Http、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35(完全指定)ログ:Appbase = file:/// D: /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/ LOG:Initial PrivatePath = D:\ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ bin Calling assembly:ThirdPartyWebAPI、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null。===ログ:このバインドは、デフォルトのロードコンテキストで開始されます。ログ:アプリケーション構成ファイルを使用:D:\ SM \ 7.4Test \ WebAPIServerV2 \ ThirdPartyWebAPI \ web.configログ:ホスト構成ファイルを使用:C:\ Users \ michalc \ Documents \ IISExpress \ config \ aspnet.configログ:マシン構成を使用C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.configのファイル。ログ:ポリシー後の参照:System.Web.Http、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35ログ:新しいURL file:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http.DLLのダウンロードを試みています。ログ:新しいURL file:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http / System.Web.Httpのダウンロードを試みています.DLL。ログ:新しいURL file:/// D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLLのダウンロードを試みています。WRN:アセンブリ名を比較すると不一致が発生しました:メジャーバージョンERR:アセンブリのセットアップを完了できませんでした(hr = 0x80131040)。プローブが終了しました。新しいURL file:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http / System.Web.Http.DLLのダウンロードを試みています。ログ:新しいURL file:/// D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLLのダウンロードを試みています。WRN:アセンブリ名を比較すると不一致が発生しました:メジャーバージョンERR:アセンブリのセットアップを完了できませんでした(hr = 0x80131040)。プローブが終了しました。新しいURL file:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / root / 9184b2ea / c6d4b139 / System.Web.Http / System.Web.Http.DLLのダウンロードを試みています。ログ:新しいURL file:/// D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLLのダウンロードを試みています。WRN:アセンブリ名を比較すると不一致が発生しました:メジャーバージョンERR:アセンブリのセットアップを完了できませんでした(hr = 0x80131040)。プローブが終了しました。アセンブリのセットアップを完了できませんでした(hr = 0x80131040)。プローブが終了しました。アセンブリのセットアップを完了できませんでした(hr = 0x80131040)。プローブが終了しました。

スタックトレース:

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

[HttpException(0x80004005):ファイルまたはアセンブリ 'System.Web.Http、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULTからの例外:0x80131040)]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context、HttpApplication app)+9935033
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext context、MethodInfo []ハンドラー)+118
System.Web.HttpApplication .InitSpecial(HttpApplicationState状態、MethodInfo []ハンドラ、IntPtr appContext、HttpContextコンテキスト)+172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext context)+336
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+296

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


バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.0.30319.18408


あなたは「System.Web.Http」に参照を再追加しようとした持っている
Izikon

4
回答を承認済みとしてマークしてください。
Aliostad 2013

回答:


288

私がすることによってこれを固定NuGetパッケージの再インストール壊れた依存関係を修正し、。パッケージマネージャーから、次のコマンドを実行します。

Update-Package Microsoft.AspNet.WebApi -reinstall

1
ローカルでWebアプリを実行することは問題ありませんでしたが(F5)、リモートサーバーに展開するとき(WebDeployを使用)、アセンブリはサーバーにコピーされませんでした。アセンブリをコピーする必要があるかどうかはわかりませんでした。とにかく、このコマンドを実行した後、必要なすべてのアセンブリにcopy-local = trueのマークが付けられ、アプリの展開後、正常に機能し始めました
Guillermo Ruffino '16

3
よりバランスの取れた画像を追加するだけです-これは私にとって問題を解決しませんでした。
Lewray、2014

2
テストなどの依存プロジェクトに必要な更新を必ず追加してください
DeeArgee

私はこれを行いましたが、あまりにも多くの変更を加えましたが、web.configのバインディングリダイレクトを調整し、他のすべての変更を破棄しましたが、これでうまくいきました。
Myster 2015年

現在、新しいエラーが発生しています。新しいバージョンはVersion = 5.2.3.0で、Version = 4.0.0.0が必要です
Yar

84

ファイルまたはアセンブリを読み込めませんでした 'System.Web.Http'エラーを解決するには、NuGetを使用してWeb API 2.1 WebHostをインストールします。

ソリューションエクスプローラーの参照で、右クリックして[nugetパッケージの管理]を選択します。(ない場合はインストールnuget)

ここに画像の説明を入力してください

左側の[NuGetパッケージの管理]ウィンドウでオンラインをクリックし、右上でWebホストを検索して、Microsoft ASP.NET Web API 2.1 Webホストをインストールします。(インストールすると、インストールボタンが緑色のチェックに変わります)

その後、プロジェクトがリロードされ、再度ビルドされると、エラーが解決され、プロジェクトがデバッグされて実行されます。エラーはなくなり、「リソースが見つかりません。URLを追加するだけです(例:localhost:52088 /からlocalhost:52088api / productsへ)

あなたの質問は素晴らしく、私を助けました。

この答えが役に立てば幸い!


カットーさん、ありがとうございます。
Saurabh Soni 2015

61

アセンブリリダイレクトを追加する必要があります。

<configuration>

   ....

   <runtime>
      <assemblyBinding>
    <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
      </assemblyBinding>
   </runtime>

   ...

</configuration>

ほとんどの場合、ウェブホスティングなどのさらにいくつかのアセンブリに対してこれを行う必要があります。


回答を編集しました。何らかの理由でDLL名はCastle Windsorに変更されましたSystem.Web.Http
Aliostad 2013年

7
新しいアセンブリが以前のアセンブリとバイナリ互換であることを確認せずに、バイナリリダイレクトを追加しないでください。
GETah

18

または、NuGet Package Manager Consoleからこれを行うこともできます

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

そして、System.Web.Http.WebHost 5.0への参照を追加できるようになります


Install-Package Microsoft.AspNet.WebApi
Djama

17

Web Api 2.2をインストールすると、このエラーが発生しました。これをweb.configに追加して、問題を解決しました。

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

1
Azureに公開するときに、最初からWeb Api 2.2だったプロジェクトについても同じです。プロジェクトはローカルで問題なく動作しましたが、AzureではOPからエラーが発生しました。これらの行をweb.configに追加し、Azureに再発行すると修正されました。
AronVanAmmers 2015

4

私は単にCopy Local = true足りないアセンブリに着手し、それでうまくいきました。もちろん、これは不足している参照(エラーメッセージに記載されている)を右クリックしてプロパティを選択することで発生します。以下のように:

ここに画像の説明を入力してください

複数のアセンブリが問題を引き起こしている可能性があるため、これで1つの問題が解決するはずです。私が行ったのは、すべてのアセンブリを選択して右クリックしました。選択したプロパティ。そして、それらすべてをCopy Local = trueに設定します。その後、再発行します。


1
完璧に働きました。System.Web.HttpおよびSystem.Net.Http.Formattingで "Copy Local = true"を実行するだけでした
Sandip Subedi

4

この問題を解決する適切な解決策は、次の手順に従うことです

。古いバージョンがある場合はVisual Studioを15.5.4に更新します(オプション)

  1. web.configからすべてのバインドリダイレクトを削除する

  2. これをcsprojファイルに追加します。

 <PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
  1. ビルド。

  2. binフォルダーに(WebAppName).dll.configファイルがあるはずです。

  3. リダイレクトが必要です。これらをweb.configにコピーします

  4. 上記の抜粋をcsprojファイルから再度削除します

  5. うまくいくはず

Detailed Blog


すべてのバインディングが作成されるわけではあり
ません

3

私にとっては、ローカルコンピューターではなく、運用環境でのみこのエラーでクラッシュしていました。それを解決したのは、/ binフォルダーの内容を削除してから、再度生成することでした。


これは人々がチェックすべきものです。私は同じ問題を抱えていました。アプリのフロントエンドにMicrosoft.AspNet.Corsの不要なDLLがあることがわかりました。prodシステムでbinフォルダーを削除し、サイトを再公開しました。
Ron

2

明白だが可能性のある役立つヒント.... webconfigアセンブリバインディングで指定する新しいバージョンが、プロジェクト参照で参照するバージョンと同じであることを確認してください。(つまり、私がこれを書いているとき... System.Web.Httpで最近NUGetを実行した場合、これは5.1.0.0になります。


2
 Installing NuGet package ASP.NET.MVC solved the issue for me. 
 To install package.
 - Right click on project 
 - Select "Manage NuGet Packages"
 - Select Online->Nuget.org from left menu
 - select "Microsoft ASP.NET MVC"
 - Click Install

 If you have already installed package earlier, please update the package by selecting Updates from left menu and then selecting "Microsoft ASP.NET" and click Update.

ここに画像の説明を入力してください

ここに画像の説明を入力してください


2

これは誰かを助けるかもしれません。

MVC4アプリで行くことにしました。

プロジェクトを実行しました

次に、
Microsoft ASP.NET WEB API 2.2(4パッケージ) などのいくつかのパッケージをインストールしました
Microsoft ASP.NET WEB API 2.2ヘルプページ
Microsoft ASP.NET WEB API 2.2 OWIN

プロジェクトを実行し、問題のあるのと同じエラー

解決:

web.configファイル

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


問題が解決しました


しかし、その後、いくつかの修正プログラムエラーが、それを解決するに移動するには、見つかったVIEWのごMVC4プロジェクトのフォルダ、見つけるsecond のweb.configからファイルや変更されたバージョンを2.0.0.03.0.0.0下図のように。


<configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>


2

私の場合、web.config適切なバインディングリダイレクトがあったため、実際には完全に私の行方不明でした。web.config解決されたエラーを復元しました。


2

メインアプリケーションのapp.configにアセンブリ参照を追加することで、System.Net.HTTPで同様の問題を解決できました。

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.1" newVersion="4.0.0.0" />
      </dependentAssembly></runtime>

1

私は解決策を見つけました!プロジェクトディレクトリ内のパッケージという名前のフォルダーを削除し、再ビルドして実行します。


1
<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>
<dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

1

はい!!!

Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

私の場合は問題なく動作します。


2
これは既存の回答の単なる複製です。追加するものがないようですので、これを削除することを検討してください。
zzzzBov 2016年

1

私はちょうど発展コピーされ、何もなかったんビンフォルダのDLLをオンライン展開にビンのフォルダと、それは私のために罰金を働きました。


0

他の人はnugetを使用してWebプロジェクトにMVCパッケージを再インストールするだけだと言っていますが、ユニットテストなど、Webプロジェクトに依存するプロジェクトには必ずMVCパッケージを追加してください。含まれている各プロジェクトを個別にビルドすると、魔女のプロジェクトには更新が必要であることがわかります。


0

同じ問題があり、パッケージの再インストールが機能しません。

アプリケーションはLocalIISで実行されます(IIS EXPRESSではありません)。アセンブリロードトレースを有効にして、System.Web.Httpロードをtemp catche以下からロードする必要があることがわかりました。その中のすべてのキャッチフォルダ削除します

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files [my application]


0

web.config実行後にnugetが行った変更を元に戻すことで、この問題を解決しましたnuget。変更を以前の作業バージョンに戻します。

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

0

この問題を解決したのは、Microsoft ASP.NET Web API 2.2ヘルプページとMicrosoft ASP.NET Web API 2.2 OWINパッケージを再インストールすることでした。両方を同時に再インストールしましたが、問題を解決したのは前者だったと思います。

ここで提供されているソリューションの最初のいくつかを試してみましたが、それでも役に立たなかったので、自分の依存関係を(Pluralsightのコースからの)機能するプロジェクトの依存関係と比較し、上記の2つの依存関係はより低いバージョン(5.0.0 )なので、私はそれらを5.2.3に更新し、動作し始めました。


0

これはWCFサービスから取得しました。私にとって(問題はローカル開発で表示されていたため)、ソリューションの下のbinフォルダーの内容を削除するだけで済みました。再構築はもう一度うまくいきます。


0

ASP.NETバージョン:4.0.30319.18408は.Net4.5に属し、System.Web.Http Version = 4.0.0.0は.NET4.0と互換性があります。そのため、お持ちのバージョンには互換性がありません。System.Web.Httpを.Net4.5と互換性のあるバージョン5.0.0.0に更新する必要があります。


0

同様の問題がありました。以前はすべてが機能していました。もともとはWebフォームを使用して作成され、後でいくつかの目的で追加されたWeb APIで作成されました。

  • Microsoft.AspNet.WebApiパッケージのアンインストール、インストール、再インストールを試みました。
  • ソリューションからパッケージフォルダーを削除し、VSでNuGetを復元することを試みました。
  • 個々のアセンブリ参照を削除して(参照の下)、パッケージを再インストールしてみました。
  • いくつかの回答で言及されているweb.configの5.2.3.0バージョンにバインディングリダイレクトを追加しようとしました。何もうまくいきませんでした。

機能したのは、Visual Studioで、発行プロファイル設定をリリースからデバッグに変更することでした。奇妙ですが、それがうまくいきました。ここで共有します。


0

この問題は、発行機能を使用してAzureに展開するときに発生しました。宛先でファイルをクリアすることを忘れないでください。

Publish Settings -> File Publish Options drop down -> Check Remove additional files at destination

これで私の問題は解決しました。万が一、私のようにこれを探し回らなければならない場合に備えています。私のプロジェクト/ソリューションではすべてが同じバージョンでしたが、展開先ではありませんでした。


0

ソリューション複数のプロジェクト使用し、あるプロジェクトのメソッドを別のプロジェクトに呼び出す場合は、すべてのプロジェクト(プロジェクトと呼び出し元プロジェクトと呼ばれる)が一意の'System.Net.Http'バージョンを使用していることを確認してください。


0

参照内のDLLの特定バージョンフラグをtrueからfalseに変更します。


0

System.Web.Http.WebHost、Version = 5.2.6.0が参照されることで同じ問題が発生しましたが、最新のNuGetパッケージは5.2.7.0でした。web.configファイルを編集し、NuGetパッケージを再インストールしてから、すべてのプロジェクトのVisual Studioプロジェクトファイルを編集して、5.2.6.0への参照が保持されないようにしました。このすべての後でも、問題は解決しませんでした。

次に、例外をスローしていたプロジェクトのbinフォルダーを調べたところ、他のプロジェクトの1つに依存していないDLLが見つかり、そこに存在するべきではありませんでした。問題のあるDLL(System.Web.Http.WebHostの5.2.6.0バージョンを使用してコンパイルされていた)を削除し、問題のあるプロジェクトを再構築しましたが、現在は機能しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.