GlobalConfiguration.Configure()がWeb API 2および.NET 4.5.1の移行後に存在しない


148

最近、このガイドに従ってプロジェクトを.NET 4.5.1およびWeb Api 2に移行しました。

MS開発者のリックアンダーソンが最初に行うことを要求するのは、変更です。

WebApiConfig.Register(GlobalConfiguration.Configuration);

GlobalConfiguration.Configure(WebApiConfig.Register);

global.asaxファイル内。それでも、ビルドしようとするとエラーが発生します。

エラー1 'System.Web.Http.GlobalConfiguration'には 'Configure'の定義が含まれていません

私のプロジェクトは現在MVC 5とWeb Api 2と.NET 4.5.1にありますが、System.Web.Httpはまだそれが.NEt 4.0バージョンだと思っています。

これを修正するにはどうすればよいですか?

ありがとうございました。

編集:

これが私のアセンブリバインディングです:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <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>
  <!--
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly> -->
</assemblyBinding>

エラーが発生したため、トップがコメント化された後、すべてがコメント化されました。

警告2解決できない同じ依存アセンブリの異なるバージョン間に競合が見つかりました。ログの冗長性が詳細に設定されている場合、これらの参照の競合はビルドログにリストされます。

ハードバインディングを取り除くことで修正されました。


1
Microsoft.AspNet.Web.Helpers.Mvc最初にアンインストールしましたか?
ブレーズ2013年

私の答えを見てはstackoverflow.com/a/20653546/3114457それが移行してあなたの問題を解決する必要があります
Livius

5
stackoverflow.com/a/21514748/2343を正解としてマークしてください!
Sameer Alibhai、2014年

回答:


271

このパッケージの一部であるsystem.web.http.webhostが必要です。次のパッケージをインストールしてこれを修正しました:

PM> Install-Package Microsoft.AspNet.WebApi.WebHost 

または、nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0で検索してください


APIコントローラーを追加したときに自動的に追加されました。VS2015を再起動して実行する必要がありました。私はまた、このページで推奨されている他のすべてを実行したため、実際の問題が何であったかはわかりません。
Piotr Kula、2015年

6
それは私にはうまくいきませんでした。パッケージは既にプロジェクトにインストールされています。
Shimmy Weitzhandler 2015

興味深いのは、ウェブホストがすでにインストールされていて、まだ機能していないGlobalConfiguration.Configure(WebApiConfig.Register);ことです。それから、AreaRegistrationの直後に、global.asaxに挿入された順序を先頭に変更しましたが、問題なく動作しました。
PedroSouki

なぜ彼らはそのようなものを書いていないのですか?私があなたの答えを見つけるのに30分かかります
Homayoun Behzadian '25 / 07/25

Microsoft.AspNet.WebApi.WebHost最新バージョンに更新した後、私のために働いた
Peter van Kekem

86

これらのアイデアはどれも、MVC 5.2.2を使用するプロジェクトに役立ちませんでした。

  • System.web.Http 5.2.2はすでにインストールされています
  • Packagesフォルダーを削除し、すべてのNuGetライブラリを完全に再ダウンロードしても何も起こらなかった
  • Web.configにはすでにSystem.Web.HttpのdependentAssemblyエントリがありました

再インストールを強制すると、問題が修正されました。NuGetパッケージマネージャーコンソールから:

update-Package -reinstall Microsoft.AspNet.WebApi.WebHost


1
私は同じ問題を抱えていましたが、再インストールしても修正されませんでした。少なくともそれはそのように見えて、私を混乱させていました。VS2015を再起動する必要があり、解決しました。
Piotr Kula、2015年

再起動vs2013 +再インストールの組み合わせで問題が解決したようです
Ram

43

GlobalConfigurationクラスはMicrosoft.AspNet.WebApi.WebHostnugetパッケージの一部です...このパッケージをWeb API 2にアップグレードしましたか?


1
はい。バージョン5.0.0です
nzondlo 2013年

1
あなたはあなたのweb.configに何らかのアセンブリバインディングリダイレクトを偶然持っていますか?任意の* System.Web.Httpに関連するアセンブリがある場合はyesの場合、あなたがそれらを共有できる...私は特に..探しています
キランChalla

すべてのアセンブリバインディングを投稿しました。
nzondlo 2013年

30

パッケージマネージャーコンソールを使用してnugetを取得し、インストールさ れていないGlobalConfigurationのInstall-Package Microsoft.AspNet.WebApi.WebHostでプロジェクトを更新します

System.Web.Httpを使用して欠落ているため、Install-Package Microsoft.AspNet.WebApi.SelfHostが必要でした


1
もう少し説明してもらえますか?
Dieter Meemken、2016年

10

プロジェクトがMicrosoft.AspNet.WebApi.WebHostインストールされていることを確認してください。結局のところ、私の場合、Microsoft.AspNet.WebApi.WebHost別のプロジェクトにインストールされていましたが、それを必要とした特定のプロジェクトにはインストールされていませんでした。packages.configで、次のような行があることを確認します。

<package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.1" targetFramework="net45" />

それが存在しない場合はMicrosoft.AspNet.WebApi.WebHost、プロジェクトにインストールされていません。Nugetパッケージマネージャーを使用するか、パッケージマネージャーコンソールを使用してインストールできます。パッケージマネージャーコンソールからインストールするには、次のコマンドを実行します。

Install-Package Microsoft.AspNet.WebApi.WebHost

5

GlobalConfiguration.Configure APIは "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"で利用できます

"Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"にはありません


3

Microsoft.AspNet.WebApi.WebHostをアンインストールしてインストールしても問題が解決しない場合は、グローバル構成が機能するようにweb.configに以下を追加します

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

これはすでに私のweb.configにありました。まだ問題があります(VS2015)
Piotr Kula、


1

私の問題は、nugetパッケージマネージャーが実際の更新を行わなかったが、ファイルには古いバージョンへの参照が含まれていたため、最初にインストールされたすべてのmvc関連パッケージ(かみそりやweb apiを含む)を削除してから、それらを再度インストールし、バージョンを更新しましたviews / web.configのかみそりをバージョン3.0.0に。


1

これらの解決策はどれも私にとってうまくいきませんでした。相互に循環依存関係があるために更新できないNugetパッケージがたくさんありました。

私はこれを昔ながらの方法で修正しなければならないでしょう。新しいMVC / web apiプロジェクトを作成し、新しいプロジェクトから既存のソリューションのNugetフォルダーに手動でコピーSystem.Web.HttpSystem.Web.Http.WebHostました。そこから、OMGによる「参照」による参照を更新し、問題を修正しました。


0

これにより、Global.asax.csファイルに名前空間を追加することにより、この問題が解決されました。

System.Web.Httpを使用します。

これで問題は解決しました。

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