33

我正在使用 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 }
            );
        }
    }
}

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

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

另一条附加信息是,当我键入“使用 System.Web。”时,Intellisense 确实识别出 .Http dll

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

4

9 回答 9

31

I solved it. The issue was that, when I created the site, I updated all packages via Nuget. However, as I wasn´t going to use Entity Framework, I uninstalled it. In order to be able to uninstall that package, it required for me to uninstall Microsoft.AspNet.Providers.Core 1.2 as well... and I did.

This missing package messed things up. I cleared the project and started all over again. I could have also used the Update-Package command in the PM Console and would have restored all lost packages. However, since I had done so much mess compared to the little (next to null) work I had done, I decided to start it all over again.

Thanks anyway!

于 2013-05-28T18:48:45.943 回答
8

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

Update-Package -reinstall Microsoft.Net.Http

于 2017-07-04T22:44:14.237 回答
3

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

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

我偶然发现了一篇博客文章,其中解释了Newtonsoft.Jsonand之间有一个链接HttpConfiguration,我Newtonsoft.Json从项目中删除了对的引用,然后从包管理器控制台packages.config重新安装了文件:Newtonsoft.Json

Install-Package Newtonsoft.Json

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

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

于 2014-12-01T08:58:33.700 回答
2

1.在解决方案资源管理器中,右键单击项目节点,然后单击添加引用。

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

3.选择您要引用的组件,如果它已经被选中,则首先删除引用而不是**再次添加引用。

再次重建项目。请让我知道它是否有效。谢谢你。

于 2016-12-15T08:54:41.950 回答
1

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

于 2014-11-21T09:52:36.173 回答
1

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

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

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

于 2014-05-08T09:27:46.507 回答
1

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

于 2017-07-03T19:52:57.000 回答
1

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

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

于 2020-06-13T12:16:09.307 回答
0

又一个场景。我接受这只是与问题松散相关,因为我纯粹是 Web API。然而,我的搜索把我带到了这里,所以......

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

当我添加一个新项目时,它进入了 4.5,因为我没有给予足够的关注。HttpConfiguration 正式从 Web API 注册方法中消失了。

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

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

于 2015-03-20T06:02:14.953 回答