1. ホーム
  2. asp.net-mvc-4

[解決済み] ASP.NET (MVC 4) Web API OData Prerelease でファイルまたはアセンブリ System.Net.Http, Version=4.0.0.0 を読み込むことができませんでした。

2023-06-18 02:34:31

質問

問題点

インストール後に Microsoft ASP.NET Web API OData パッケージ 5.0.0-rc1 をインストールした後に発生しました。 をインストールした後、次の例外が発生しました。

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

私の MVC 4 プロジェクトは真新しく、本当に小さなもので、派手なものは何もありません。私は .NET フレームワーク 4.5 をターゲットにしています。

私はこれが必要です。 nugetパッケージ Delta クラスを使用して PATCH を実装します。 (パッケージのバージョン 4.0.0.0 を使用すると、Delta クラスが動作しません)。

どうすれば直るのでしょうか?

System.Web.Http の私のバージョン

GAC 私はバージョン 5.0.0.0 のSystem.Web.Httpを使用しています。

gacutil -l System.Web.Http Global Assembly Cache には次のアセンブリが含まれています。 以下のアセンブリが含まれています。System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL

ビジュアルスタジオ で、アセンブリをブラウズすると、System.Web.Http の指定されたバージョンは 4.0.0.0 (と表示されます(なぜ?)

私のプロジェクト への参照は、System.Web.Http.

  • バージョンを持つ 5.0.0.0
  • パッケージの \libnet45 フォルダを指定する。
  • CopyLocal=trueを持つ。

試してみたこと

Web.config で redirect v 4.0.0.0 を 5.0.0.0 にバインドしてみました。

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

しかし、別の例外が発生します。

メソッド 'System.Web.Http.GlobalConfiguration.cctor()' が アクセスフィールド 'System.Web.Http.GlobalConfiguration.CS$<>9__CachedAnonymousMethodDelegate2' のフィールドにアクセスするための、メソッド 'System.Web.Http.GlobalConfiguration.cctor()' による試みが失敗しました。 が失敗しました。

v 4.0.0.0は、コアWeb APIエンジンで使用する必要があるのでしょうね。

リンクされた質問

コード分析エラー ファイルまたはアセンブリ 'System.Net.Http, Version=2.0.0.0 in MVC4 Web API を読み込むことができませんでした。 ファイルまたはアセンブリ 'System.Net.Http, Version=2.0.0.0 in MVC4 Web API' を読み込むことができませんでした。

どのように解決するのですか?

Visual Studio 2013 には、この問題に対処するための新機能があります。アプリをビルドすると、異なるバージョンのアセンブリが参照されていることについての警告が表示されるはずです。警告をダブルクリックして、アセンブリ バインディング リダイレクトを web.config に追加します。

参照 http://msdn.microsoft.com/en-us/library/2fc472t2.aspx をご覧ください。

jeff.eynon は、VS が自動的にファイルを編集するためには、(TFS ソース コントロールを使用している場合) web.config をチェックアウトしておく必要があることを以下で述べています。ヒントをありがとうございました。