这是我第一次在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);
}
任何人都可以帮我解决这个问题吗?
答案 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核心库。 (安装后,安装按钮将变为绿色检查)
之后项目将重新加载,当它再次构建时,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的引用。
了解有关这些功能的更多信息答案 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包。