我有程序集时WebAPI发现引用错误

时间:2014-08-07 11:31:56

标签: c# asp.net-mvc-4 asp.net-web-api

我在我的解决方案中创建了一个MVC 4 Web API应用程序,但我现在遇到2个错误,我需要一些帮助。

  

' System.Web.Http.HttpConfiguration'不包含的定义   ' MapHttpAttributeRoutes'没有扩展方法   ' MapHttpAttributeRoutes'接受第一个类型的参数   ' System.Web.Http.HttpConfiguration'可以找到(你错过了吗?   使用指令或程序集引用?)

以下代码

发生此错误

文件: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 }
            );
        }
    }

另一个,在Global.asax

  

' System.Web.Http.GlobalConfiguration'不包含定义   为'配置'

文件: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

更新

通过Nuget安装WebAPI WebHost(@ sa_ddam213的建议)之后,它解决了一些问题,但现在运行我的应用程序时出现了这个错误

  

无法加载文件或程序集&System; Net.Http'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用

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>

7 个答案:

答案 0 :(得分:95)

强制重新安装Web API可以完成这项工作:

 update-package microsoft.aspnet.webapi -reinstall

答案 1 :(得分:12)

我做了:

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

这解决了我的问题。

答案 2 :(得分:7)

我在我的项目中卸载了一些nuget包,包括MVC,然后重新安装。解决。谢谢大家的帮助。

答案 3 :(得分:6)

更新您的NuGet包。为我工作。

答案 4 :(得分:5)

请尝试在nugetmanager控制台

上运行以下命令来更新软件包
update-package microsoft.aspnet.webapi.webhost -reinstall

答案 5 :(得分:1)

特别是对我来说,我从TFS下载了一些人在工作解决方案并得到了错误

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

关于继续重新安装web api,但我知道过去的经验,您安装项目的顺序的依赖关系链最后可能会有点剧。

JSON很受欢迎,因为有时我看到更新的JSON强制并卸载了另一个软件包的新版本并安装了旧版本,因为它认为“它最清楚。”

对我而言,通过nuget UPDATE JSON 是我必须做的。

答案 6 :(得分:0)

1)检查解决方案文件夹packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45是否有System.Web.Http.dll可用。应该在那里。如果不可用,请从任何其他运行的项目包文件夹中复制它。 2)从您的项目中删除System.Web.Http.dll的引用。 3)通过指向package \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Web.Http.dll

的新.dll添加新引用