添加'System.Web.Http'命名空间时,找不到类型或命名空间名称'HttpGet'

时间:2013-10-11 05:45:15

标签: c# asp.net-mvc http-post http-get

我在MVC中有一个问题。

目前我在MVC工作,版本是MVC4。我有2个ActionResult方法,见下文

[HttpGet]
 public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

 [HttpPost]
 public ActionResult About(ModelName ccc)
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

我们需要{em> [HttpPost] 和 [HttpGet] 属性的using System.Web.Mvc;命名空间。所以我在控制器中添加了using System.Web.Mvc;命名空间。但我需要在我的控制器中为 httpsresponseexpection 错误处理添加另一个命名空间using System.Web.Http;。我在命名空间中添加了。目前System.Web.Mvc;无效。

  

我收到此错误:无法找到类型或命名空间名称“HttpGet”。为什么? HttpGet的System.Web.Mvc和System.Web.Http之间的任何关系?

4 个答案:

答案 0 :(得分:38)

您获得此异常的原因是因为2个不同的命名空间中有2个不同的HttpGetAttribute类:

第一个用于ASP.NET MVC控制器,第二个用于ASP.NET Web API控制器。

当您导入第二个命名空间时,编译器不再能够消除您引用的2个类中的哪个类的歧义,因为2个命名空间在范围内。

Microsoft基本上复制了ASP.NET MVC中存在的用于Web API的所有类,但将它们放在不同的命名空间中。基本上你不应该混合这些命名空间。

  

但我需要使用System.Web.Http添加另一个命名空间;对于   我的控制器中的httpsresponseexpection错误处理

为什么需要在ASP.NET MVC控制器中使用它?通常,您应该在Web API控制器中执行此操作。

但是如果由于某种原因你需要混合2,你必须通过完全限定它来明确指定你需要使用哪个属性:

[System.Web.Mvc.HttpGet]
public ActionResult About()
{
    ViewBag.Message = "Your app description page.";
    return View();
}

答案 1 :(得分:1)

为了记录,我在类库中有一个类似的问题,引用了MVC。我在类库中安装了一个nuget包,它本身依赖于MVC(注意:新包是:RazorGenerator.Mvc)。以前,类库依赖于使用'添加引用'添加的Sytem.Web.Mvc.dll引用。对话而不是通过" Microsoft.AspNet.Mvc"安装的对话。 nuget包。

Nuget选择了最低的MVC版本,以满足新软件包的依赖性要求。这意味着先前的引用(对于MVC 5)被替换为较低版本引用(对于MVC 3)。

使用nuget升级类库中的MVC版本解决了这个问题。

答案 2 :(得分:1)

以下是该问题的解决方案试试....

 [System.Web.Mvc.HttpGet]
 public ActionResult About()
{
        ViewBag.Message = "Your app description page.";

        return View();
    }

答案 3 :(得分:0)

我使用.NET Core在OS X上遇到了这个问题。我错过了Microsoft.AspNetCore.Mvcproject.json的条目。

在:

{
    "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.0",
          "type": "platform"
        },
        ...,
        "Microsoft.Extensions.Configuration.CommandLine": "1.0.0"
      },
...
}

后:

{
    "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.0",
          "type": "platform"
        },
        ...,
        "Microsoft.AspNetCore.Mvc": "1.0.0",
        "Microsoft.Extensions.Configuration.CommandLine": "1.0.0"
      },
...
}