web-dev-qa-db-ja.com

2012年から2013年に更新後、ファイルまたはアセンブリのSystem.Web.Http 4.0.0を読み込めませんでした

に従ってアップグレードしました。 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、バージョン= 4.0.0.0、カルチャ=ニュートラル、PublicKeyToken = 31bf3856ad364e35'またはその依存関係の1つをロードできませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)
説明:現在のWeb要求の実行中に未処理の例外が発生しました。エラーとコードのどこで発生したかの詳細については、スタックトレースを確認してください。

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

ソースエラー:

48行目:49行目:50行目:} 51行目:52行目:protected void Application_BeginRequest(オブジェクトセンダ、EventArgs e)

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

アセンブリロードトレース:アセンブリ 'System.Web.Http、バージョン= 4.0.0.0、カルチャ=ニュートラル、PublicKeyToken = 31bf3856ad364e35'をロードできなかった理由を特定するために、次の情報が役立ちます。

===プレバインド状態情報=== LOG:DisplayName = System.Web.Http、Version = 4.0.0.0、Culture =ニュートラル、PublicKeyToken = 31bf3856ad364e35(完全指定)LOG:Appbase = file:/// D: /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/ LOG:初期PrivatePath = D:\ SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\bin呼び出し元アセンブリ:ThirdPartyWebAPI、バージョン= 1.0.0.0、カルチャ=ニュートラル、PublicKeyToken = null。 === LOG:このバインドはデフォルトのロードコンテキストで始まります。 LOG:アプリケーション構成ファイルを使用:D:\ SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\web.config LOG:ホスト構成ファイルを使用:C:\ Users\michalc\Documents\IISExpress\config\aspnet.config LOG:マシン構成を使用C:\ Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.configからのファイル。 LOG:ポリシー後の参照:System.Web.Http、バージョン= 4.0.0.0、カルチャ=ニュートラル、PublicKeyToken = 31bf3856ad364e35ログ:新しいURLファイルのダウンロードを試行しています:/// C:/Windows/Microsoft.NET/Framework/v4 .0.30319 /一時的なASP.NETファイル/ root/9184b2ea/c6d4b139/System.Web.Http.DLL。 LOG:新しいURLファイルをダウンロードしようとしています:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/一時ASP.NETファイル/ root/9184b2ea/c6d4b139/System.Web.Http/System.Web.Http .DLL LOG:新しいURLファイルをダウンロードしようとしています:/// D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL。 WRN:アセンブリ名を比較すると、不一致が発生しました。メジャーバージョンエラー:アセンブリのセットアップを完了できませんでした(hr = 0x80131040)。プロービングは終了しました。

スタックトレース:

[FileLoadException:ファイルまたはアセンブリ 'System.Web.Http、バージョン= 4.0.0.0、カルチャ=ニュートラル、PublicKeyToken = 31bf3856ad364e35'、またはその依存関係の1つをロードできませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)] ThirdPartyWebAPI.WebApiApplication.Application_Start()d:¥SM¥7.4Test¥WebAPIServerV2¥ThirdPartyWebAPI¥Global.asax.cs:50

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

[HttpException(0x80004005):ファイルまたはアセンブリ 'System.Web.Http、バージョン= 4.0.0.0、カルチャ=ニュートラル、PublicKeyToken = 31bf3856ad364e35'またはその依存関係のいずれかを読み込めませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContextコンテキスト)+9913572 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContextコンテキスト)+101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRetext wr context、IIS 7WorkerRetext wr context、IIS 7 WorkerRetext 4)


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

176

私はこれを NuGetパッケージの再インストール で修正しました。これは壊れた依存関係を修正します。パッケージマネージャから、以下を実行します。

Update-Package Microsoft.AspNet.WebApi -reinstall
280
Pathoschild

ファイルまたはアセンブリの 'System.Web.Http'エラーをロードできないという問題を解決するには、NuGetを使用してWeb API 2.1 WebHostをインストールします。

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

enter image description here

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

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

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

この回答がお役に立てば幸いです!

84
Catto

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

<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>

たぶんあなたはウェブホスティングなどのようないくつかのより多くのアセンブリのためにこれをしなければなりません.

58
Aliostad

または、NuGet Package Managerコンソールからこれを実行できます。

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

そして、System.Web.Http.WebHost 5.0への参照を追加することができます。

16
Sameer

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>
15
jhilden

足りないアセンブリにCopy Local = trueを設定するだけでうまくいきました。これはもちろん不足している参照(エラーメッセージに表示されています)を右クリックしてプロパティを選択することで起こります。以下のように:

enter image description here

これで、問題の原因となるアセンブリが複数ある可能性があるため、1つの問題を解決するはずです。選択されたプロパティそれらすべてをCopy Local = trueに設定します。その後、再公開してください。

4
t_plusplus

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

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

  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
Sajeetharan

私にとっては、ローカルマシンではなく本番環境でこのエラーが発生した場合にのみクラッシュしました。それを解決したのは、/ binフォルダの内容を削除してから再生成することでした。

3
Oana Leva

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

2
Jim Taliadoros

これは誰かに役立つかもしれません。

私は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>


問題が解決しました


しかし、その後、いくつかの ホットフィックス エラーが見つかりました。それを解決するには、MVC4プロジェクトの _ view _ フォルダに移動し、second を見つけます。以下に示すように、web.config fileとバージョンを 2.0.0.0 から 3.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
micronyks
 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.

enter image description here

enter image description here

2
Arvind Krmar

私の場合は、web.configが完全に欠落していました。これには適切なバインディングのリダイレクトが含まれていました。 web.configを復元するとエラーが解決しました。

2

私は解決策を見つけました!プロジェクトディレクトリのpackageという名前のフォルダを削除してから、再構築して実行します。

1

私は何もしませんでした。開発用の Bin folder DLL をオンラインで展開した Bin フォルダにコピーしただけで問題ありません。

1
Anjan Kant

私はメインアプリケーションの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
Parag Bangad

はい!!!

Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

それは私の場合うまくいきます.... thnkz

1
X-Coder
<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
ravula sandeep

他の人が言っているように、単にnugetを使ってあなたのWebプロジェクトにMVCパッケージを再インストールするが、ユニットテストのようなWebプロジェクトに依存するどんなプロジェクトにもMVCパッケージを追加することを忘れないでください。含まれている各プロジェクトを個別にビルドする場合は、魔女のものにはアップデートが必要です。

0
DeeArgee

発行機能を使用してAzureにデプロイすると、この問題が発生しました。宛先のファイルを消去することを忘れないでください。

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

私がそうであったように人々がこれのために探し回る必要がある場合、これは私の問題を解決しました。私のプロジェクト/ソリューションではすべて同じバージョンでしたが、展開先ではありませんでした。

0
Shelby115

私は同じ問題を抱えていたし、パッケージを再インストールすると動作しません。

私のアプリケーションはLocalIIS(IIS EXPRESSではなく)で実行されます。 Assembly Load Traceを有効にして、load System.Web.Http loadを一時キャッチより下にします。 so すべてのcatchフォルダを削除する .

C:\ Windows\Microsoft.NET\Framework\v4.0.30319 \一時的なASP.NETファイル[私のアプリケーション]

0
Mohammadreza

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

  <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
roo2

1つのソリューションで複数のプロジェクトを使用で、あるプロジェクト内のmethodを別のプロジェクトに呼び出す場合は、必ずすべてのプロジェクト(projectおよびcallerプロジェクトと呼ばれます)固有の'System.Net.Http'バージョンを使用を使用してください。

0
MohammadSoori

私はWCFサービスからこれを受けました。私にとっては(問題はローカルのdevで表示されていたので)、私は単にソリューションの下のbinフォルダの内容を削除しなければなりませんでした。再構築はもう一度うまくいきます。

0
DubMan

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

ここで提供されている解決策のうち最初のいくつかを試してみましたが、それでも解決しませんでした。それから私の依存関係を(Pluralsightのコースから)うまくいったプロジェクトのものと比較しました。だから私はそれらを5.2.3に更新し、それは働き始めました。

0
lukegf

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

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

0
cghore

私は同様の問題を抱えていました。以前はすべてうまくいっていました。それはもともとWebフォームを使用して作成され、後で追加のWeb APIを使用して作成されたものもあります。

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

Visual Studioでは、パブリッシュプロファイル設定をReleaseからDebugに変更しました。奇妙だが、それがうまくいった。ここで共有しています。

0
joym8

ASP.NETバージョン:4.0.30319.18408は.Net4.5に属し、System.Web.Httpバージョン= 4.0.0.0は.NET4.0と互換性があります。だからあなたが持っているバージョンは互換性がありません。 System.Web.Httpを.Net4.5と互換性のあるバージョン5.0.0.0に更新する必要があります。

0
oscarMg

参照内のdllについて、Specific versionフラグをtrueからfalseに変更します。

0
user2992715