如何将Web API添加到现有的ASP.NET MVC 4 Web应用程序项目?
我希望将ASP.NET Web API添加到在Visual Studio 2012中开发的ASP.NET MVC 4 Web应用程序项目。我必须执行哪些步骤才能将正常运行的Web API添加到项目中? 我知道我需要一个从ApiController派生的控制器,但这就是我所知道的。
让我知道如果我需要提供更多的细节。
我需要执行的步骤是:
- 添加对
System.Web.Http.WebHost
引用。 - 添加
App_Start\WebApiConfig.cs
(请参阅下面的代码片段)。 - 在
Global.asax.cs
导入命名空间System.Web.Http
。 - 在
MvcApplication.Application_Start()
(Global.asax.cs
文件WebApiConfig.Register(GlobalConfiguration.Configuration)
中调用WebApiConfig.Register(GlobalConfiguration.Configuration)
, 然后注册默认Web应用程序路由,否则优先。 - 添加一个派生自
System.Web.Http.ApiController
的控制器。
然后,我可以从教程 (您的第一个ASP.NET Web API)学到足够的东西来定义我的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); }
更新10.16.2015:
Word有它,NuGet包Microsoft.AspNet.WebApi必须安装以上才能工作。
更新11/22/2013 – 这是最新的WebApi软件包:
Install-Package Microsoft.AspNet.WebApi
原始答案(这是一个较旧的WebApi包)
Install-Package AspNetWebApi
更多细节 。
在我的MVC 5项目中添加WebAPI。
终于能够经过几个小时的努力工作…这SOpost帮助..
-
打开NuGet程序包pipe理器并运行
PM> Install-Package Microsoft.AspNet.WebApi
-
添加引用System.Web.Routing,System.Web.Net,System.Net.Http DLL如果不存在
-
右键单击控制器文件夹>添加新项目> Web>添加Web API控制器
-
Web.config将被相应的VS修改
-
如果不存在,添加Application_Start(){}方法
保护无效Application_Start(){/ /这应该是在这种方法的行#1 GlobalConfiguration.Configure(WebApiConfig.Register); }
-
添加以下类(我在global.asax.cs文件中添加)
公共静态类WebApiConfig {公共静态无效注册(HttpConfigurationconfiguration){/ / Web API路由config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }
}
-
相应地修改web api方法
命名空间{公共类VSController:ApiController {/ /获取API /:url使用=> API / VS公共stringGet(){“从networkingAPI控制器”您好! }
// GET api/<controller>/5 : url to use => api/vs/5 public string Get(int id) { return (id + 1).ToString(); } }
}
-
重build和testing
build立一个简单的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>
只要在controllers文件夹下添加一个“WebApi控制器”,Visual Studio就会自动处理相关性。
Visual Studio已经添加了ASP.NET Web API 2的全套依赖项目来投影“MyTestProject”。
项目中的Global.asax.cs文件可能需要进行其他更改才能启用ASP.NET Web API。
添加以下名称空间引用:
使用System.Web.Http; 使用System.Web.Routing;
如果代码尚未定义Application_Start方法,请添加以下方法:
protected void Application_Start(){}
将以下行添加到Application_Start方法的开头:
GlobalConfiguration.Configure(WebApiConfig.Register);
您可以从nuget安装为下面的图像:
或者,在软件包pipe理器控制台上运行以下命令行:
Install-Package Microsoft.AspNet.WebApi
在开始合并MVC和Web API项目之前,我会build议阅读有关cons和专业人士将它们分解为不同的项目。 一个非常重要的事情(我自己的)是authentication系统,这是完全不同的。
如果您需要在MVC和Web API上使用经过身份validation的请求,则需要记住Web API是RESTful(不需要保留会话,简单的HTTP请求等),但是MVC不是。
为了查看实现的差异,只需在模板中创buildVisual Studio 2013中的两个不同项目:一个用于MVC,一个用于Web API(不要忘记在创build过程中打开“个人身份validation”)。 你会在AuthencationControllers中看到很多不同之处。
所以,要知道。
上述解决scheme完美地工作。 我更喜欢在select项目模板时selectWeb API选项,如下图所示
注意:该解决scheme适用于Visual Studio 2013或更高版本。 原来的问题是在2012年提出的,现在是2016年,因此增加了Visual Studio 2013或更高版本的解决scheme。
- ASP.NET MVC – 捆绑configuration顺序
- 在ASP.NET MVC中设置默认的JSON序列化程序
- 如何将MVC5添加到Visual Studio 2013?
- 在哪里放置AutoMapper.CreateMaps?
- 如何创build文件并通过ASP.NET MVC中的FileResult返回?
- 我可以在web.config中设置maxJsonLength的无限长度吗?
- 我可以传递一个匿名types到我的ASP.NET MVC视图吗?
- 尝试浏览* .cshtml文件时出现“这种types的页面没有送达”错误
- asynchronousPartialView导致“HttpServerUtility.Execute阻止…”exception