假设您在创建新的 MVC (5) 项目时忘记勾选 Web API 复选框(将其添加到项目中),您需要做什么来添加 Web API 并使其工作?
Assuming you forgot to tick the Web API checkbox (add it to the project) when making a new MVC (5) project, what do you need to do add Web API and get it working?
有很多迁移问题,但似乎没有一个具有将 Web API 添加到 MVC 5 项目的完整和最新的步骤,而且似乎已经从一些旧的答案中改变了.
将 Web API 添加到 MVC 4
添加GlobalConfiguration.Configure(WebApiConfig.Register) MVC 4
推荐答案更新 MVC 项目
使用 Nuget 获取最新的 Web API.
Update the MVC project
Use Nuget to get the newest Web API.
项目 - 右键单击 - 管理 Nuget 包 - 搜索 Web API(Microsoft ASP.NET Web API ...)并将其安装到您的 MVC 项目中.
Project - Right click - Manage Nuget Packages - Search for Web API (Microsoft ASP.NET Web API ...) and install it to your MVC project.
那么您仍然需要让 Web API 路由 工作.来自 Microsoft 的配置 ASP.NET Web API 2
Then you still need to get Web API routing to work. From Microsoft's Configuring ASP.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
If you have an MVC Project it will have Global.asax.cs, add the new routes. Order of the Global.asax.cs routes is critical. Note there are outdated examples which use 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.请参阅 channel9.msdn/Events/Build/2014/3-644(约 42 分钟)它的作用.看起来很有帮助!
WebAPI Help
To get the (very) helpful WebAPI help pages, install WebAPI.HelpPage. See channel9.msdn/Events/Build/2014/3-644 (~42 minutes in) for what it does. It looks very helpful!
Nuget 控制台:Install-Package Microsoft.AspNet.WebApi.HelpPage
到控制器文件夹 -> 添加新项目 -> Web API 控制器类.
To the controllers folder -> Add new item -> Web API Controller Class.
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 中进行测试,或者在 JavaScript 控制台中进行非获取测试.
Now you can test in IE/FF/Chrome as usual, or in the JavaScript consoles for non-get testing.
(只有 URL 中的控制器,它将调用新 Web API 控制器中的 GET() 操作,它会根据 REST 自动映射到方法/操作,例如 PUT/POST/GET/DELETE.您不需要需要像在 MVC 中那样通过操作调用它们)网址直接:
(With just the controller in the URL it will call the GET() action in the new Web API Controller, it's automatically mapped to methods/actions depending on the REST e.g. PUT/POST/GET/DELETE. You don't need to call them by action like in MVC) The URL directly:
localhost:PORT/api/CONTROLLERNAME/或者使用 jQuery 查询控制器.运行项目,打开控制台(IE 中的 F12)并尝试运行 Ajax 查询.(检查您的端口和控制器名称)
Alternatively use jQuery to query the controller. Run the project, Open the console (F12 in IE) and try run an Ajax query. (Check your PORT & CONTROLLERNAME)
$.get( "localhost:PORT/api/CONTROLLERNAME/", function( data ) { //$( ".result" ).html( data ); alert( "Get data received:" + data); });旁注:组合时需要考虑一些优点/缺点一个项目中的MVC和Web API
WebAPI 帮助验证:localhost:PORT/help
更多推荐
如何将 Web API 添加到现有的 ASP.NET MVC (5) Web Application 项目中?
发布评论