2013-05-28 63 views
24

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

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。

另一附加一条信息是,当I型“使用的System.Web。”,智能感知识别.Http DLL

然而,在代码,它不识别任何它的参数。

+1

的'HttpConfiguration'类是'System.Web.Http'库。 – Jay

+1

是的,代码显示它使用System.Web.Http。但它不识别HttpConfiguration(也不知道它是否识别RouteParameter) – Soph

+2

'System.Web'程序集包含System.Web.Http命名空间中的类,这就是为什么你在那里看不到错误,但是'HttpConfiguration'类在'System.Web.Http'程序集中,而不是'System.Web'。你可以验证你有两个程序集引用? – Jay

回答

24

我解决它。问题是,当我创建网站时,我通过Nuget更新了所有包。但是,因为我不打算使用实体框架,所以我卸载了它。为了能够卸载该软件包,它需要我卸载Microsoft.AspNet.Providers.Core 1.2以及...我做到了。

这丢失的包把事情搞乱。我清理了这个项目并重新开始。我也可以在PM控制台中使用Update-Package命令,并可以恢复所有丢失的软件包。然而,由于我做了很多工作,而我做了一些小工作(接近零工),所以我决定重新开始。

无论如何,谢谢!

+10

这个解决方案让我在那里得到了一半......在更新软件包以最终解决问题之后,需要执行全新的“Install-Package Microsoft.AspNet.WebApi.Core”。 – Kanapolis

+0

全新的安装包Microsoft.AspNet.WebApi.Core也为我解决了这个问题。谢谢@Kanapolis –

+0

如果因为'install.ps1无法加载,因为在安装此软件包时禁用了此系统上的运行脚本'等错误而失败,请在Powershell中运行此命令:'ExecutionPolicy Unrestricted -Scope CurrentUser',然后使用此命令在包管理器控制台中:'Update-Package -reinstall Microsoft.AspNet.WebApi.Core' – eFarzad

1

我们开始我们自上周以来的一个项目遇到此问题。这个项目在2周前正在建设中,然后突然开始抛出这个异常。这个项目的nuget包中没有做任何更改。即使从SVN中检出较旧的版本也不会导致成功构建。

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

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

1

确保您编译框架4.5和4.0不。这解决了我的问题

2

对于其他面临此问题,我的解决方案是不同的。首先我是从.NET 4.5降级了一个项目,.NET 4.0,但症状都与上面相同:

大会“HttpConfiguration”的类型或名称不 命名空间“系统存在。 Web.Http'(你是否缺少一个使用指令或 程序集引用?)

我碰到一个博客文章对此解释称有Newtonsoft.JsonHttpConfiguration之间的联系迷迷糊糊的,我从项目中删除提及Newtonsoft.Jsonpackages.config文件,然后重新安装了包管理器控制台Newtonsoft.Json

Install-Package Newtonsoft.Json 

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

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

+3

而不是手动删除东西,从Nuget控制台重新安装包:Update-Package -reinstall Newtonsoft.Json – Riga

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中。我觉得很简单。

我的感觉是,有更多的这个...

2

1.In Solution Explorer中,右键单击该项目节点,然后单击添加引用。

2.在Add Reference对话框中,选择Assemblies选项卡。然后在右上角的搜索框中输入“system.web.http”。

3.选择要引用的组件,如果已经选择了比先选择的引用而不是**再次添加引用。

重新构建项目。请让我知道它是否有效。谢谢。

+0

我已经在.NET 4.5并重新安装Newtonsoft.Json,但没有任何作品,除了这一个。我不知道我是如何失去这个参考的,谢谢! –

1

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

2

我在克隆以前为我工作的MVC 4.0应用程序时遇到此错误。我的问题是Microsoft.Net.Http NuGet软件包无法正常恢复。我解决了它从控制台的NuGet:

Update-Package -reinstall Microsoft.Net.Http