Тип или имя пространства имен "HttpGet" не удалось найти при добавлении " System.Сеть.Пространство имен Http
у меня есть одна проблема в 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();
}
нам нужен using System.Web.Mvc;
пространство имен [протоколы HttpPost] и [HttpGet] атрибуты. Поэтому я добавил using System.Web.Mvc;
пространство имен в моем контроллере . Но мне нужно добавить еще одно пространство имен using System.Web.Http;
на httpsresponseexpection обработка ошибок в моем контроллере .Si я добавил в пространство имен. В это время System.Web.Mvc;
не работает .
я получил эту ошибку: не удалось найти тип или имя пространства имен "HttpGet" . Почему ? любые отношения между системой.Сеть.Mvc и система.Сеть.Http для HttpGet ?
4 ответов
причина, по которой вы получаете это исключение, заключается в том, что есть 2 разных HttpGetAttribute
классы в 2 разных пространства имен:
первый используется в ASP.NET контроллеры MVC и второй используется в ASP.NET контроллеры веб-API.
при импорте второго пространства имен компилятор больше не может определить, какой из 2 классов вы ссылаетесь на за 2 пространства имен в области видимости.
в основном Microsoft дублировала все классы, которые существовали в ASP.NET MVC для веб-API, но разместил их в другом пространстве имен. В принципе, вы не должны смешивать эти пространства имен.
но мне нужно добавить еще одно пространство имен с помощью System.Сеть.Протокол HTTP; для httpsresponseexpection обработка ошибок в моем контроллере
Почему вам нужно использовать это в ASP.NET контроллер MVC? Обычно это что вы должны делать в контроллере веб-API.
но если по какой-то причине вам нужно смешать 2, вам придется явно указать, какой атрибут вам нужно использовать, полностью квалифицируя его:
[System.Web.Mvc.HttpGet]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
для записи у меня была аналогичная проблема в библиотеке классов со ссылкой на MVC. Я установил пакет nuget в библиотеке классов, который сам зависел от MVC (Примечание: новый пакет был: RazorGenerator.В MVC). Ранее библиотека классов полагалась на систему.Сеть.В MVC.dll ссылка добавлена с помощью диалога "добавить ссылку", а не на одном, установленном через " Microsoft.сеть САШ."Пакет NuGet в MVC.
Nuget выбрал самую низкую версию MVC, которая будет соответствовать зависимости требования нового пакета. Это означало, что предыдущая ссылка (на MVC 5) была заменена ссылкой на более низкую версию (на MVC 3).
обновление версии MVC в библиотеке классов с помощью nuget разрешило проблему.
вот решение этой проблемы попробуйте....
[System.Web.Mvc.HttpGet]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
я столкнулся с этой проблемой в OS X с помощью .NET Core. Я пропустил запись для Microsoft.AspNetCore.Mvc
в своем project.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"
},
...
}