如何将Web API添加到现有的ASP.NET MVC(5)Web应用程序项目?

假设您在创build一个新的MVC(5)项目时忘了勾选Web APIcheckbox(将其添加到项目中),那么您需要添加Web API并使其工作?

有大量的迁移问题,但是似乎没有将Web API添加到MVC 5项目的完整和最新的步骤,并且似乎已经从一些旧的答案中改变了。

将Web API添加到MVC 4

添加GlobalConfiguration.Configure(WebApiConfig.Register)MVC 4

更新MVC项目

使用Nuget获取最新的Web API。

项目 – 右键单击​​ – pipe理Nuget包 – searchWeb API(Microsoft ASP.NET Web API …)并将其安装到您的MVC项目。

那么你仍然需要让Web API路由工作。 来自Microsoft的configurationASP.NET Web API 2

将WebApiConfig.cs添加到App_Start /文件夹

using System.Web.Http; namespace WebApplication1 { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // TODO: Add any additional configuration code. // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); // WebAPI when dealing with JSON & JavaScript! // Setup json serialization to serialize classes to camel (std. Json format) var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter; formatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(); } } } 

如果你有一个MVC项目,它将有Global.asax.cs ,添加新的路线。 Global.asax.cs路由的顺序是至关重要的。 请注意,使用WebApiConfig.Register过时示例

将此行添加到Global.asax.cs中: GlobalConfiguration.Configure(WebApiConfig.Register);

 protected void Application_Start() { // Default stuff AreaRegistration.RegisterAllAreas(); // Manually installed WebAPI 2.2 after making an MVC project. GlobalConfiguration.Configure(WebApiConfig.Register); // NEW way //WebApiConfig.Register(GlobalConfiguration.Configuration); // DEPRECATED // Default stuff FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } 

WebAPI帮助

要获得( 非常 ) 有用的WebAPI帮助页面 ,请安装WebAPI.HelpPage。 请参阅http://channel9.msdn.com/Events/Build/2014/3-644 (约42分钟)。 它看起来非常有帮助!

Nuget控制台: Install-Package Microsoft.AspNet.WebApi.HelpPage

validationWebAPI正在工作:

到控制器文件夹 – >添加新项目 – > Web API控制器类。

 public class TestController : ApiController { //public TestController() { } // GET api/<controller> public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/<controller>/5 public string Get(int id) { return "value"; } //... } 

现在,您可以像平常一样在IE / FF / Chrome中进行testing,或者在JavaScript控制台中进行非获取testing。

(只需要URL中的控制器,它将在新的Web API控制器中调用GET()动作,它会根据REST自动映射到方法/动作,例如PUT / POST / GET / DELETE。不需要调用他们通过在MVC中的行动)直接的URL:

 http://localhost:PORT/api/CONTROLLERNAME/ 

或者使用jQuery来查询控制器。 运行该项目,打开控制台(IE中的F12),然后尝试运行Ajax查询。 (请检查您的PORT&CONTROLLERNAME)

 $.get( "http://localhost:PORT/api/CONTROLLERNAME/", function( data ) { //$( ".result" ).html( data ); alert( "Get data received:" + data); }); 

注意:在项目中结合使用MVC和Web API时,需要考虑一些优点/缺点

WebAPI帮助validation: http://localhost:PORT/help