HttpConfiguration缺少程序集

时间:2013-05-28 14:52:27

标签: asp.net-mvc asp.net-mvc-4

我正在使用MVC4构建网站。我甚至无法开始我有一个奇怪的错误。这是我的代码:

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

namespace MyProject
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

错误消息:程序集“HttpConfiguration”的类型或名称在命名空间“System.Web.Http”中不存在(您是否缺少using指令或程序集引用?)

它也无法识别只读字段RouteParameter。我发现它可能与版本有关,我的System.Web dll是版本4.0.0.0。

另外一条信息是当我输入“使用System.Web。”时,Intellisense会识别.Http dll

但是,在代码中,它无法识别任何参数。

9 个答案:

答案 0 :(得分:25)

我解决了。问题在于,当我创建网站时,我通过Nuget更新了所有软件包。但是,由于我不打算使用Entity Framework,因此我将其卸载。为了能够卸载该软件包,我还需要卸载Microsoft.AspNet.Providers.Core 1.2 ......我做到了。

这个丢失的包搞砸了。我清理了项目并重新开始了。我本可以在PM控制台中使用Update-Package命令,并且可以恢复所有丢失的包。然而,由于我做了很多混乱,而不是我做过的小工作(接下来是空的),我决定重新开始。

非常感谢!

答案 1 :(得分:4)

克隆之前为我工作的MVC 4.0应用程序时遇到此错误。我的问题是Microsoft.Net.Http NuGet包没有正确恢复。我从NuGet控制台解决了它:

Update-Package -reinstall Microsoft.Net.Http

答案 2 :(得分:3)

对于面临此问题的其他人,我的解决方案有所不同。首先我将项目从.net 4.5降级到.net 4.0,但症状与上述相同:

  

程序集“HttpConfiguration”的类型或名称不存在于   命名空间'System.Web.Http'(你是否缺少using指令或   汇编参考?)

我偶然发现了一篇博文,其中解释说Newtonsoft.JsonHttpConfiguration之间存在关联,我从项目和Newtonsoft.Json文件中删除了对packages.config的引用然后从包管理器控制台重新安装Newtonsoft.Json

Install-Package Newtonsoft.Json

由于其他依赖性,我无法从包管理控制台中卸载Newtonsoft.Json,因此需要手动删除引用。

以下是该文章的链接:Newtonsoft.Json Hidden Dependencny on HttpConfiguration Breaks Compilation

答案 3 :(得分:2)

1.在Solution Explorer中,右键单击项目节点,然后单击Add Reference。

2.在“添加引用”对话框中,选择“程序集”选项卡。并在右上角的搜索框中键入“system.web.http”。

3.选择要引用的组件,如果已选择再次删除引用,则再次选择“添加引用”。

再次重建项目。如果有效,请告诉我。谢谢。

答案 4 :(得分:1)

自上周以来,我们开始在其中一个项目中遇到此问题。这个项目在2周前建成并且很好。然后突然间开始抛出这个异常。该项目的nuget包中没有进行任何更改。即使从SVN查看旧版本也没有成功构建。

出于绝望,我们将解决方案从VS2012升级到VS2013&瞧,它建成了!我们怀疑,但无法确认Visual Studio 2013中完成的工具更新是否影响了Visual Studio 2012中的此库。

这可能不适用于所有人,但有一个升级解决方案的选项,这似乎可以解决问题。

答案 5 :(得分:1)

确保为Framework 4.5而不是4.0编译。这解决了我的问题

答案 6 :(得分:1)

当您更新并重新安装Nuget的所有AspNet软件包时,似乎没有合适的解决方案 - 重新启动Visual Studio保存了我。

答案 7 :(得分:1)

我不得不更新Microsoft.Net.Http,经过长时间的努力,它对我有用

更新包-重新安装Microsoft.Net.Http

答案 8 :(得分:0)

又一种情况。我接受这只是与问题松散相关,因为我纯粹是Web API。但是我的搜索让我在这里......

我在解决方案中有一个针对Framework 4.5.2的现有项目。

当我添加一个新项目时,由于我没有给予足够的重视,因此它进入了4.5。 HttpConfiguration从Web API Register方法中消失了。

将目标更改为4.5.2解决了HttpConfiguration问题。请注意,它还使RouteParameter引起了一些其他问题:现在我有两个定义,一个在System.Web.Http中,另一个在System.Web.UI.WebControls中。我想这很容易。

我的感觉是,还有更多......