Как добавить веб-API к существующему ASP.NET проект веб-приложения MVC 4?
Я хочу добавить ASP.NET Web API к an ASP.NET проект веб-приложения MVC 4, разработанный в Visual Studio 2012. Какие шаги я должен выполнить, чтобы добавить функционирующий веб-API в проект? Я знаю, что мне нужен контроллер, производный от ApiController, но это все, что я знаю.
Дайте мне знать, если мне нужно предоставить больше деталей.
7 ответов:
шаги, которые мне нужно было выполнить, были:
- добавить ссылку на
System.Web.Http.WebHost
.- добавить
App_Start\WebApiConfig.cs
(см. фрагмент кода ниже).- Import namespace
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 и System.Net. Http DLL если не там уже
щелкните правой кнопкой мыши папку контроллеры > добавить новый элемент > web > добавить Web API controller
Web.конфигурация будет изменена соответствующим образом Против
добавить Application_Start () {} метод, если его еще нет
protected void Application_Start() { //this should be line #1 in this method GlobalConfiguration.Configure(WebApiConfig.Register); }
добавить следующий класс (я добавил в global.асакс.cs file)
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 } ); } }
изменить метод веб-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 Web API.
добавьте следующие ссылки на пространство имен:
используя Система.Сеть.Http; использование системы.Сеть.Маршрутизация;
Если код еще не определяет метод Application_Start, добавьте следующий метод:
protected void 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 или выше.