私は最近 このガイド に従ってプロジェクトを.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に設定されている場合、これらの参照の競合はビルドログに表示されます。
そしてハードバインディングを取り除くことでそれを修正しました。
このパッケージの一部であるsystem.web.http.webhostが必要です。次のパッケージをインストールすることでこれを直しました:
PM> Install-Package Microsoft.AspNet.WebApi.WebHost
またはnugetで検索する https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.
これらのアイデアのどれも私のプロジェクトがMVC 5.2.2を使うのを助けませんでした。
再インストールを強制することで問題は解決しました。 NuGetパッケージマネージャコンソールから:
update-Package -reinstall Microsoft.AspNet.WebApi.WebHost
GlobalConfiguration
クラスはMicrosoft.AspNet.WebApi.WebHost
nugetパッケージの一部です...このパッケージをWeb API 2にアップグレードしましたか?
Install-Package Microsoft.AspNet.WebApi.WebHost で不足しているGlobalConfigurationを使用してプロジェクトを更新するのをやめさせるために、パッケージマネージャコンソールを使用します。
System.Web.Httpを使って欠けているのために Install-Package Microsoft.AspNet.WebApi.SelfHost が必要でした。
プロジェクトに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
GlobalConfiguration.Configure APIは、 "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"で利用可能です。
"Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"にはありません。
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>
"Install-Package Microsoft.AspNet.WebApi.Core"は問題なく動作しました。
これらの解決策のどれも私のために働きませんでした。互いに依存関係が循環しているために更新できないNugetパッケージがありました。
私はこれを昔ながらの方法で直さなければならないでしょう。私は新しいMVC/web apiプロジェクトを作成し、新しいプロジェクトから既存のソリューションのNugetフォルダーに手動でSystem.Web.Http
とSystem.Web.Http.WebHost
をコピーしました。そこから、OMG、「ブラウジング」によって参照を更新し、問題を修正しました。
私の問題はnugetパッケージマネージャは本当の更新をしなかったがファイルは古いバージョンへの参照を含んでいた、それで私は最初にすべてのインストールされたmvc関連パッケージ(razorとweb apiを含む)を削除しバージョン3.0.0へのviews/web.configのかみそり。
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>