Jak dodać Web API do istniejącego ASP.NET projekt aplikacji webowej MVC 4?
Chcę dodać ASP.NET Web API do ASP.NET projekt aplikacji webowej MVC 4, opracowany w Visual Studio 2012. Jakie kroki należy wykonać, aby dodać funkcjonujące API internetowe do projektu? Wiem, że potrzebuję kontrolera pochodzącego z Apicontrollera, ale to wszystko, co wiem.
Daj mi znać, jeśli będę musiał podać więcej szczegółów.
7 answers
Kroki, które musiałem wykonać to:
- Dodaj odniesienie do
System.Web.Http.WebHost
. - dodaj
App_Start\WebApiConfig.cs
(patrz fragment kodu poniżej). - Importuj przestrzeń nazw
System.Web.Http
wGlobal.asax.cs
. - Call
WebApiConfig.Register(GlobalConfiguration.Configuration)
inMvcApplication.Application_Start()
(in fileGlobal.asax.cs
), przed zarejestrowaniem domyślnej trasy aplikacji webowej, ponieważ w przeciwnym razie miałoby to pierwszeństwo. - Dodaj kontroler pochodzący z
System.Web.Http.ApiController
.
Mógłbym się nauczyć wystarczająco dużo z tutorial (Twój pierwszy ASP.NET Web API) do zdefiniuj mój kontroler 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 });
}
}
Global.asax.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);
}
Aktualizacja 10.16.2015:
Word ma to, pakiet NuGet Microsoft.AspNet.WebApi musi być zainstalowany, aby powyższe działanie działało.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-16 06:38:15
Aktualizacja 22/11/2013 - jest to najnowszy pakiet WebApi:
Install-Package Microsoft.AspNet.WebApi
Oryginalna odpowiedź (jest to starszy Pakiet WebApi)
Install-Package AspNetWebApi
Więcej szczegóły .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-21 06:42:29
Aby dodać WebAPI w moim projekcie MVC 5.
-
Otwórz NuGet Package manager consol i uruchom
PM> Install-Package Microsoft.AspNet.WebApi
-
Dodaj referencje do systemu.Www.Routing, System.Web.Net i biblioteki DLL systemu. Net. Http, jeśli jeszcze nie ma
-
Kliknij prawym przyciskiem myszy katalog controllers > add new item > web > Add Web API controller
-
Www.config zostanie odpowiednio zmodyfikowany przez VS
-
Dodaj metodę Application_Start () {} jeśli nie ma już
protected void Application_Start() { //this should be line #1 in this method GlobalConfiguration.Configure(WebApiConfig.Register); }
-
Dodaj następującą klasę (dodałem w global.asax.plik 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 } ); } }
-
Odpowiednio zmodyfikować metodę 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(); } } }
-
Odbudować i przetestować
-
Zbuduj prostą stronę 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-21 18:52:30
Jak tylko dodasz "WebApi Controller" w folderze controllers, Visual Studio automatycznie zajmie się zależnościami;
Visual Studio dodało pełny zestaw zależności dla ASP.NET www API 2 do projektu "MyTestProject".
Globalny.asax.plik cs w projekcie może wymagać dodatkowych zmian aby włączyć ASP.NET Web API.
Dodaj następujące odwołania do przestrzeni nazw:
Korzystanie Z Systemu.Www.Http; za pomocą System.Www.Routing;
Jeśli kod nie definiuje jeszcze metody Application_Start, dodaj następującą metodę:
Protected void Application_Start() { }
Dodaj następujące linie na początku metody Application_Start:
GlobalConfiguration.Configure (WebApiConfig.Rejestr);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-22 05:13:11
Możesz zainstalować z nuget jako poniższy obrazek:
Lub uruchom poniższy wiersz poleceń na konsoli Menedżera pakietów:
Install-Package Microsoft.AspNet.WebApi
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-03 21:51:22
Zanim zaczniesz łączyć projekty MVC i Web API, proponuję przeczytać o minusach i zaletach, aby rozdzielić je jako różne projekty. Jedną bardzo ważną rzeczą (moją własną) są systemy uwierzytelniania, które są zupełnie inne.
Jeśli chcesz używać uwierzytelnionych żądań zarówno w MVC, jak i Web API, musisz pamiętać, że Web API jest RESTful (nie trzeba utrzymywać sesji, prostych żądań HTTP itp.), ale MVC nie.
Aby spojrzeć na różnice implementacji wystarczy utworzyć 2 różne projekty w Visual Studio 2013 z szablonów: jeden dla MVC i jeden dla Web API(Nie zapomnij włączyć "uwierzytelniania indywidualnego" podczas tworzenia). Zobaczysz wiele różnic w Authencationcontrollerach.
Więc bądź świadomy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:44
Powyższe rozwiązanie działa doskonale. Wolę wybrać opcję Web API podczas wybierania szablonu projektu, jak pokazano na poniższym obrazku
Uwaga: rozwiązanie działa z programem Visual Studio 2013 lub nowszym. Pierwotne pytanie zostało zadane w 2012 i jest to 2016, dlatego dodanie rozwiązania Visual Studio 2013 lub nowszego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 08:55:33