Как добавить Web API к существующему ASP.NET проект веб-приложения MVC 4?
Я хочу добавить ASP.NET Web API к ASP.NET проект веб-приложения MVC 4, разработанный в Visual Studio 2012. Какие шаги я должен выполнить, чтобы добавить функционирующий веб-API в проект? Я знаю, что мне нужен контроллер, производный от ApiController, но это все, что я знаю.
Дайте мне знать, если мне нужно предоставить больше деталей.
7 ответов
шаги, которые мне нужно было выполнить, были:
- добавить ссылку на
System.Web.Http.WebHost
. - добавить
App_Start\WebApiConfig.cs
(см. фрагмент кода ниже). - импортировать пространство имен
System.Web.Http
наGlobal.asax.cs
. - вызов
WebApiConfig.Register(GlobalConfiguration.Configuration)
наMvcApplication.Application_Start()
(в файлеGlobal.asax.cs
),до Регистрация маршрута веб-приложения по умолчанию, поскольку в противном случае он будет иметь приоритет. - добавить контроллер, полученный из
System.Web.Http.ApiController
.
я мог бы тогда узнать хватит с учебник (ваш первый ASP.NET Web API) для определения моего контроллера API.
App_Start\WebApiConfig.cs:
using System.Web.Http;
class WebApiConfig
{
public static void Register(HttpConfiguration configuration)
{
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
}
}
глобальные.асакс.cs:
using System.Web.Http;
...
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
WebApiConfig.Register(GlobalConfiguration.Configuration);
RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
обновление 10.16.2015:
слово имеет его, пакет NuGet Microsoft.сеть САШ.Для работы вышеизложенного необходимо установить WebApi.
обновление 22.11.2013 - это последний пакет WebApi:
Install-Package Microsoft.AspNet.WebApi
оригинальный ответ (это более старый пакет WebApi)
Install-Package AspNetWebApi
больше подробности.
чтобы добавить WebAPI в мой проект MVC 5.
-
откройте NuGet Package manager consol и запустите
PM> Install-Package Microsoft.AspNet.WebApi
добавить ссылку на System.Сеть.Маршрутизация, System.Web.Net и система.Сеть.Http DLL, если еще нет
щелкните правой кнопкой мыши папку контроллеры > добавить новый элемент > web > добавить Web API controller
Web.config будет изменен соответствующим образом VS
-
добавить метод Application_Start () {}, если его еще нет
protected void Application_Start() { //this should be line #1 in this method GlobalConfiguration.Configure(WebApiConfig.Register); }
-
добавить следующий класс (я добавил в global.асакс.cs файл)
public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
-
изменить метод web api соответственно
namespace <Your.NameSpace.Here> { public class VSController : ApiController { // GET api/<controller> : url to use => api/vs public string Get() { return "Hi from web api controller"; } // GET api/<controller>/5 : url to use => api/vs/5 public string Get(int id) { return (id + 1).ToString(); } } }
перестроить и проверить
-
создайте простую html-страницу
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="../<path_to_jquery>/jquery-1.9.1.min.js"></script> <script type="text/javascript"> var uri = '/api/vs'; $(document).ready(function () { $.getJSON(uri) .done(function (data) { alert('got: ' + data); }); $.ajax({ url: '/api/vs/5', async: true, success: function (data) { alert('seccess1'); var res = parseInt(data); alert('got res=' + res); } }); }); </script> </head> <body> .... </body> </html>
Как только вы добавляете "контроллер WebApi" в папку controllers, Visual Studio автоматически заботится о зависимостях;
Visual Studio добавила полный набор зависимостей для ASP.NET полотно API 2 для проекта "MyTestProject".
Глобальная.асакс.cs-файл в проекте может потребовать дополнительных изменений чтобы включить веб ASP.NET API-интерфейс.
добавьте следующие ссылки на пространство имен:
используя Система.Сеть.Http; использование системы.Сеть.Маршрутизация;
Если код еще не определяет метод Application_Start, добавьте следующий метод:
защищенный пустота событий Application_Start() { }
добавьте следующие строки в начало метода Application_Start:
GlobalConfiguration.Настроить(WebApiConfig.Регистрация);
вы можете установить из nuget как изображение ниже:
или запустите следующую командную строку в консоли диспетчера пакетов:
Install-Package Microsoft.AspNet.WebApi
прежде чем вы начнете объединять проекты MVC и Web API, я бы предложил прочитать о плюсы и минусы чтобы разделить их как разные проекты. Одна очень важная вещь (моя собственная) - это системы аутентификации, которые совершенно разные.
Если вам нужно использовать аутентифицированные запросы как на MVC, так и на Web API, вам нужно помнить, что Web API RESTful (не нужно сохранять сеанс, простые HTTP-запросы и т. д.), но MVC нет.
чтобы посмотреть на различия из реализаций просто создайте 2 разных проекта в Visual Studio 2013 из шаблонов: один для MVC и один для Web API (не забудьте включить "индивидуальную аутентификацию" во время создания). Вы увидите много различий в AuthencationControllers.
Итак, будьте в курсе.
вышеуказанное решение работает отлично. Я предпочитаю выбрать опцию Web API при выборе шаблона проекта, как показано на рисунке ниже
Примечание: решение работает с Visual Studio 2013 или выше. Исходный вопрос был задан в 2012 году, и это 2016, поэтому добавление решения Visual Studio 2013 или выше.