我正在使用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
但是,在代码中,它无法识别任何参数。
答案 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.Json
和HttpConfiguration
之间存在关联,我从项目和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中。我想这很容易。
我的感觉是,还有更多......