如何将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
- 什么是ASP.NET MVC控制器的生命周期?
- SessionID在ASP.NET MVC中不断变化,为什么?
- 我如何实现自定义的RazorViewEngine在非标准位置查找视图?
- 如何在Asp.net MVC 4中使用简单的Ajax Beginform?
- ASP.NET Web API:正确的方式返回401 /未授权的响应
- ASP.NET MVC:使用UrlHelper的unit testing控制器
- ASP.NET MVC – 根据Active Directoryvalidation用户,但要求input用户名和密码
- Application_Start不开火?
- ASP.NET MVC – 提取URL的参数