找不到类型或命名空间IHttpActionResult

时间:2013-11-08 06:51:04

标签: asp.net-mvc namespaces

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

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

任何人都可以帮我解决这个问题吗?

11 个答案:

答案 0 :(得分:92)

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

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

由于

答案 1 :(得分:34)

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

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

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

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

答案 2 :(得分:20)

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

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

在左侧的manage NuGet Packages窗口中单击Online,然后在右上角搜索API 2.1并安装Microsoft ASP.NET Web API 2.1核心库。 (安装后,安装按钮将变为绿色检查)

enter image description here

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

答案 3 :(得分:10)

Check with this link to get the namespace for 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>安装包Microsoft.AspNet.WebApi -Version 5.0.0

答案 4 :(得分:9)

我有类似的问题&重新安装将解决此问题。 去吧 工具> NuGet包管理器>包管理器控制台 在Visual Studio 2013中,记下以下内容: -

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

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

注意:在我的情况下,该进程显式检出了Web.config和packages.config文件,并删除了System.Web.Http dll文件。

答案 5 :(得分: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/

了解有关这些功能的更多信息

答案 6 :(得分:6)

这个解决方案对我有用:
工具 - >库包管理器 - >包管理器控制台,然后键入:
安装包Microsoft.AspNet.WebApi -Version 5.0.0
update-Package Microsoft.AspNet.WebApi -reinstall
参考:http://blog.bitlinkit.com/type-namespace-ihttpactionresult-not-found/

答案 7 :(得分:2)

仅供参考,使用.NET Core 3.1时遇到相同的问题。

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

答案 8 :(得分:1)

使用NuGet安装Web API2 Core lib。 DLL。您可能必须在安装Web API2之前更新Nuget,因为API2中的某些组件与旧的Nuget包不兼容。我这样做了,问题解决了。

答案 9 :(得分:1)

在我将System.Web.Http更新到版本5.0.0.0之后的情况下,我需要重新启动IDE才能解决此问题。

答案 10 :(得分:0)

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

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

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

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