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

Luc*_*tos 50 c# asp.net-mvc-4 asp.net-web-api

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

'System.Web.Http.HttpConfiguration'不包含'MapHttpAttributeRoutes'的定义,也没有扩展方法'MapHttpAttributeRoutes'接受类型为'System.Web.Http.HttpConfiguration'的第一个参数'(你是否缺少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 }
            );
        }
    }
Run Code Online (Sandbox Code Playgroud)

另一个是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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

UPDATE

通过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>
Run Code Online (Sandbox Code Playgroud)

Dan*_*ana 96

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

 update-package microsoft.aspnet.webapi -reinstall
Run Code Online (Sandbox Code Playgroud)


gar*_*ryp 12

我做了:

get-project <project_name> | uninstall-Package Microsoft.AspNet.WebApi.WebHost -force
Run Code Online (Sandbox Code Playgroud)

然后重新安装(特定版本与其他项目中的版本一致)

get-project <project_name> | install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.2
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题.


Luc*_*tos 7

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


FAH*_*HID 6

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


小智 5

请尝试通过在nugetmanager控制台上运行以下命令来更新软件包

update-package microsoft.aspnet.webapi.webhost -reinstall
Run Code Online (Sandbox Code Playgroud)