web-dev-qa-db-ja.com

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

私は最近 このガイド に従ってプロジェクトを.NET 4.5.1とWeb Api 2に移行し始めました。

MS開発者のRick Andersonがあなたに最初にすることを求めるのは変更です。

WebApiConfig.Register(GlobalConfiguration.Configuration);

GlobalConfiguration.Configure(WebApiConfig.Register);

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

エラー1「System.Web.Http.GlobalConfiguration」に「構成」の定義が含まれていません

私のプロジェクトは現在MVC 5とWeb Api 2と.NET 4.5.1です。

どうすればこれを修正できますか?

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

編集する

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

<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同じ依存関係にあるアセンブリの異なるバージョン間で矛盾が見つかったため解決できませんでした。ログの冗長性がdetailedに設定されている場合、これらの参照の競合はビルドログに表示されます。

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

142
nzondlo

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

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

またはnugetで検索する https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.

264
Tyrone Moodley

これらのアイデアのどれも私のプロジェクトが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

81
Charles Burns

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

43
Kiran Challa

Install-Package Microsoft.AspNet.WebApi.WebHost で不足しているGlobalConfigurationを使用してプロジェクトを更新するのをやめさせるために、パッケージマネージャコンソールを使用します。

System.Web.Httpを使って欠けているのために Install-Package Microsoft.AspNet.WebApi.SelfHost が必要でした。

27
Tyeth

プロジェクトに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 Package Managerを使用するか、またはPackage Managerコンソールからインストールできます。パッケージマネージャコンソールからインストールするには、次のコマンドを実行します。

Install-Package Microsoft.AspNet.WebApi.WebHost
10
Cameron Tinker

GlobalConfiguration.Configure APIは、 "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"で利用可能です。

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

5
user3508883

Microsoft.AspNet.WebApi.WebHostをアンインストールしてインストールしても問題が解決しない場合は、global.configurationが機能するように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>
2

"Install-Package Microsoft.AspNet.WebApi.Core"は問題なく動作しました。

2
Terry Mosoma

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

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

1
Micah B.

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

1
Soniku

web.configの下のコードと一致するようにしてください、私はいくつかのバージョンの問題を発見し、私はバージョンを一致させたときに自分自身を修正しました。

<system.web.webPages.razor>
    <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Helpers" />
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="System.Web.WebPages" />
            <add namespace="System.Web.UI.WebControls" />
        </namespaces>
    </pages>
</system.web.webPages.razor>

 <!-- and-->

<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
    <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
    </dependentAssembly>
</assemblyBinding>
0
user10884045