61

这是我第一次在 ASP.NET MVC4 中创建 Web API 应用程序。我打开了一个新的 Web API 项目并添加了一个名为“产品”的新控制器。下面给出的函数显示找不到错误命名空间。

public IHttpActionResult GetProduct(int id) 
{
    var product = products.FirstOrDefault((p) => p.Id == id);
    if (product == null)
    {
        return NotFound();
    }
    return Ok(product);
 }

谁能帮我解决这个问题?

4

11 回答 11

94

由于您使用的是 Asp.Net 4.0,IHttpActionResult 在命名空间 System.Web.Http 4.0 版中不可用,因此您必须将命名空间更新到 5.0.0.0 版。您可以通过右键单击引用中的 System.Web.Http 命名空间并转到属性来检查您的命名空间版本。您可以通过右键单击您的解决方案项目-> 管理解决方案的 NuGet 包-> 搜索 Asp.Net WebAPI 2 -> 选择 Asp.Net WebAPI 2 并单击管理来更新它。您还可以检查它是否在更新选项卡上可用,如果它在更新选项卡中可用,您可以从那里更新。完成后,通过转到引用中 System.Web.Http 命名空间的属性来确认版本。

这对我有用,希望对你也有用。

谢谢

于 2014-01-04T01:01:01.827 回答
37

当我从源代码管理中签出一个项目时,我遇到了类似的问题。

我在项目中引用了 Microsoft ASP.NET Web API 2,但我仍然无法编译该项目。

解决方案是使用包管理器控制台重新安装包:

PM> update-Package Microsoft.AspNet.WebApi –reinstall

于 2014-03-07T11:20:45.277 回答
20

要解决 IHttpActionResult 引用错误,请使用 NuGet 添加引用以安装 Web API2 核心库。dll

在引用中的解决方案资源管理器中,右键单击并选择管理 nuget 包。(如果没有安装nuget)

在左侧的管理 NuGet 包窗口中单击在线,然后在右上角搜索 API 2.1 并安装 Microsoft ASP.NET Web API 2.1 核心库。(安装后安装按钮将变为绿色复选标记)

在此处输入图像描述

之后项目将重新加载,当它再次构建时,IHttpActionResult 引用错误将得到解决,项目将成功构建。你的问题很好,帮助了我。希望这个答案有帮助!

于 2014-03-13T20:22:07.100 回答
11

检查此链接以获取 IHttpActionResult和所有的命名空间。

此包包含在 IIS 上托管 ASP.NET Web API 所需的一切。ASP.NET Web API 是一个框架,可让您轻松构建覆盖广泛客户端(包括浏览器和移动设备)的 HTTP 服务。ASP.NET Web API 是在 .NET Framework 上构建 RESTful 应用程序的理想平台。

要安装 Microsoft ASP.NET Web API 2,请在包管理器控制台中运行以下命令或管理 NuGet 包

PM> Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

于 2013-12-20T09:09:46.587 回答
9

我有类似的问题&重新安装将解决这个问题。只需转到 Visual Studio 2013 中的工具 > NuGet 包管理器 > 包管理器控制台并写下以下内容:-

PM> update-Package Microsoft.AspNet.WebApi –reinstall

然后,清理解决方案并构建/重建解决方案。

注意:在我的情况下,该过程明确检查了 Web.config 和 packages.config 文件,并删除了 System.Web.Http dll 文件。

于 2014-12-06T10:09:38.197 回答
9

This solution worked for me:
Tools – > Library Package Manager -> Package Manager Console, then type:
Install-Package Microsoft.AspNet.WebApi -Version 5.0.0
update-Package Microsoft.AspNet.WebApi –reinstall
Reference: http://blog.bitlinkit.com/type-namespace-ihttpactionresult-not-found/

于 2015-09-29T10:36:26.487 回答
6

您尝试使用的功能是 Web API 2 的一部分。既然您提到您使用的是 MVC 4,我希望您希望升级对 MVC 5 和 Web API 2 的引用。

在http://www.strathweb.com/2013/06/ihttpactionresult-new-way-of-creating-responses-in-asp-net-web-api-2/了解有关这些功能的更多信息

于 2013-11-20T16:09:58.793 回答
4

仅供参考,我在使用 .NET Core 3.1 时遇到了同样的问题。

解决方案是使用IActionResult而不是IHttpActionResult.

于 2020-06-12T13:51:39.403 回答
1

使用 NuGet 安装 Web API2 核心库。dll。您可能需要在安装 Web API2 之前更新 Nuget,因为 API2 中的某些组件与旧的 Nuget 包不兼容。我已经这样做了,问题得到了解决。

于 2014-05-20T04:42:14.630 回答
1

就我而言,更新System.Web.Http到 5.0.0.0 版后,我需要重新启动 IDE 才能解决此问题。

于 2015-02-08T17:40:48.423 回答
0

这个问题似乎发生在我最近开始使用 Visual Studio 2015 的 2 个项目中。项目是一个带有 mvc 和 web api 组件的 ASP.Net MVC 5 网站。在运行更新并清理不需要的 nuget 包后,我从另一个类似项目中复制了一些样板代码,并且在 IHttpActionResult 和 RouteAttribute 未找到时遇到了同样的问题。

问题是由于项目引用中引用的 System.Web.Http.dll 版本不正确。默认情况下,使用程序集的系统 GAC 版本。

要解决此问题,只需删除此引用并在 Nuget 包文件夹中添加对同一程序集的引用:[项目文件夹]\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http .dll

您应该首先检查您是否已更新到所需版本的 Microsoft.AspNet.WebApi.Core nuget 包。

于 2017-07-11T14:37:30.120 回答