Kroki, które musiałem wykonać to:
- Dodaj odniesienie do
System.Web.Http.WebHost
.
- Dodaj
App_Start\WebApiConfig.cs
(patrz fragment kodu poniżej).
- Zaimportuj przestrzeń nazw
System.Web.Http
do Global.asax.cs
.
- Zadzwoń
WebApiConfig.Register(GlobalConfiguration.Configuration)
na MvcApplication.Application_Start()
(w pliku Global.asax.cs
), zanim rejestracji trasy domyślnej aplikacji sieci Web jako że w przeciwnym razie ma pierwszeństwo.
- Dodaj kontroler pochodzący z
System.Web.Http.ApiController
.
Mógłbym wtedy nauczyć się wystarczająco dużo z samouczka (Twój pierwszy interfejs API sieci Web ASP.NET), aby zdefiniować 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łało.
System.Net.Http
, ale poza tym działało to jak urok!AKTUALIZACJA 22.11.2013 - to najnowszy pakiet WebApi:
Oryginalna odpowiedź (jest to starszy pakiet WebApi)
Więcej szczegółów .
źródło
Install-Package Microsoft.AspNet.WebApi
już teraz chcesz . Zobacz nuget.org/packages/Microsoft.AspNet.WebApiAby dodać WebAPI do mojego projektu MVC 5.
Otwórz konsolę menedżera pakietów NuGet i uruchom
Dodaj odniesień do
System.Web.Routing
,System.Web.Net
iSystem.Net.Http
bibliotek DLL, jeśli nie ma jużKliknij folder kontrolerów prawym przyciskiem myszy> dodaj nowy element> sieć> Dodaj kontroler API sieci Web
Web.config zostanie odpowiednio zmodyfikowany przez VS
Dodaj
Application_Start
metodę, jeśli jeszcze jej nie maDodaj następującą klasę (dodałem w pliku global.asax.cs)
Zmodyfikuj odpowiednio metodę interfejsu API sieci Web
Przebuduj i przetestuj
Zbuduj prostą stronę HTML
źródło
Jak tylko dodasz „kontroler WebApi” w folderze kontrolerów, Visual Studio automatycznie zajmie się zależnościami;
źródło
Install-Package Microsoft.AspNet.WebApi
2. Dodaj nowy element „Klasa kontrolera API sieci Web (v2.1)”. Wynik: dodaje kontroler interfejsu API, ale się nie zmieniaApplication_Start
. Z Owinem.Możesz zainstalować z nuget jak na poniższym obrazku:
Lub uruchom poniższy wiersz poleceń w konsoli Menedżera pakietów:
źródło
Zanim zaczniesz łączyć projekty MVC i Web API, proponuję przeczytać o wadach i zaletach, aby rozdzielić je jako różne projekty. Jedną bardzo ważną rzeczą (moją) są systemy uwierzytelniania, które są zupełnie inne.
JEŚLI musisz używać uwierzytelnionych żądań zarówno w interfejsie MVC, jak i interfejsie API sieci Web, musisz pamiętać, że interfejs API sieci Web jest w stanie RESTful (nie trzeba utrzymywać sesji, prostych żądań HTTP itp.), Ale MVC nie.
Aby zobaczyć różnice w implementacjach, po prostu stwórz 2 różne projekty w Visual Studio 2013 z szablonów: jeden dla MVC i jeden dla Web API (nie zapomnij włączyć „Indywidualnego uwierzytelnienia” podczas tworzenia). Zobaczysz dużą różnicę w AuthencationControllers.
Bądź więc świadomy.
źródło
UWAGA: jest to po prostu skrót od tej odpowiedzi powyżej
Otwórz konsolę menedżera pakietów NuGet i uruchom
Dodaj odniesień do
System.Web.Routing
,System.Web.Net
iSystem.Net.Http
bibliotek DLL, jeśli nie ma jużDodaj następującą klasę
Dodaj
Application_Start
metodę, jeśli jeszcze jej nie ma (w pliku global.asax.cs)Kliknij folder kontrolerów prawym przyciskiem myszy> dodaj nowy element> sieć> Dodaj kontroler API sieci Web
źródło
Powyższe rozwiązanie działa idealnie. Wolę wybrać opcję Web API podczas wybierania szablonu projektu, jak pokazano na poniższym obrazku
Uwaga: Rozwiązanie działa z Visual Studio 2013 lub nowszym. Pierwotne pytanie zostało zadane w 2012 roku i jest to rok 2016, dlatego dodano rozwiązanie Visual Studio 2013 lub nowszy.
źródło
Miałem ten sam problem, rozwiązanie było takie proste
Kliknij prawym przyciskiem myszy Solotion, zainstaluj Microsoft.ASP.NET.WebApi z „Manage Nuget Package for Sulotion”
boom to wszystko;)
źródło