web-dev-qa-db-ja.com

WebAPIは、アセンブリがあるときに参照エラーを検出しました

ソリューション内にMVC 4 Web APIアプリケーションを作成しましたが、現在2つのエラーが発生しているため、助けが必要です。

「System.Web.Http.HttpConfiguration」には「MapHttpAttributeRoutes」の定義が含まれておらず、「System.Web.Http.HttpConfiguration」タイプの最初の引数を受け入れる拡張メソッド「MapHttpAttributeRoutes」が見つかりません(usingディレクティブがありませんか?またはアセンブリ参照?)

このエラーは次のコードで発生します

ファイル:WebApiConfig.cs(App_Startフォルダー)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web;

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

もう1つは、Global.asaxにあります

「System.Web.Http.GlobalConfiguration」には「Configure」の定義が含まれていません

ファイル:Global.asax.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.WebHost;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

enter image description here

[〜#〜] update [〜#〜]

Nugetを介してWebAPI WebHost(@ sa_ddam213の提案)をインストールすると、いくつかの問題は解決しますが、アプリケーションを実行するとこのエラーが発生します

ファイルまたはアセンブリ 'System.Net.Http'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません

Web.configファイルにはアセンブリがあります

    <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0"/>
    </dependentAssembly>
48
Lucas_Santos

MVCを含むプロジェクト内のいくつかのnugetパッケージをアンインストールして、もう一度インストールします。解決しました。助けてくれてありがとう。

7
Lucas_Santos

Web APIを強制的に再インストールすると、次のことが可能になります。

 update-package Microsoft.aspnet.webapi -reinstall
95
Dan Ochiana

やった:

get-project <project_name> | uninstall-Package Microsoft.AspNet.WebApi.WebHost -force

その後再インストール(特定のバージョンは他のプロジェクトのものと一致する)

get-project <project_name> | install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.2

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

12
garryp

NuGetパッケージを更新します。私のために働いた。

6
FAHID

nugetmanagerコンソールで次のコマンドを実行して、パッケージを更新してください。

update-package Microsoft.aspnet.webapi.webhost -reinstall
5

具体的には、私はTFSからワークスソリューションの誰かをダウンロードし、エラーが発生しました

System.Web.Http.HttpConfiguration' does not contain a definition for 'MapHttpAttributeRoutes' and no extension method 'MapHttpAttributeRoutes' 

私はABOUT TOでWeb APIの再インストールを進めましたが、アイテムをインストールする順序の依存関係チェーンが少しドラマチックになってしまうという過去の経験を知っています。

JSONは、更新されたJSONフォースを見たり、別のパッケージの新しいバージョンをアンインストールしたり、古いバージョンをインストールしたりするので、「ベストだと思っていたので、ヒットまたはミスします。

私にとってPDATE JSON nugetを介して私がしなければならなかったすべてでした。

1
Tom Stickel

1)ソリューションフォルダーpackages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45でSystem.Web.Http.dllが利用可能かどうかを確認します。そこにあるはずです。使用できない場合は、実行中の他のプロジェクトパッケージフォルダーからコピーします。 2)プロジェクトからSystem.Web.Http.dllの参照を削除します。 3)packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Web.Http.dllにある新しい.dllをポイントして、新しい参照を追加します

0
AtyulyaKadam