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

我希望将ASP.NET Web API添加到在Visual Studio 2012中开发的ASP.NET MVC 4 Web应用程序项目。我必须执行哪些步骤才能将正常运行的Web API添加到项目中? 我知道我需要一个从ApiController派生的控制器,但这就是我所知道的。

让我知道如果我需要提供更多的细节。

我需要执行的步骤是:

  1. 添加对System.Web.Http.WebHost引用。
  2. 添加App_Start\WebApiConfig.cs (请参阅下面的代码片段)。
  3. Global.asax.cs导入命名空间System.Web.Http
  4. MvcApplication.Application_Start()Global.asax.cs文件WebApiConfig.Register(GlobalConfiguration.Configuration)中调用WebApiConfig.Register(GlobalConfiguration.Configuration)然后注册默认Web应用程序路由,否则优先。
  5. 添加一个派生自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帮助..

  1. 打开NuGet程序包pipe理器并运行

    PM> Install-Package Microsoft.AspNet.WebApi

  2. 添加引用System.Web.Routing,System.Web.Net,System.Net.Http DLL如果不存在

  3. 右键单击控制器文件夹>添加新项目> Web>添加Web API控制器

  4. Web.config将被相应的VS修改

  5. 如果不存在,添加Application_Start(){}方法

    保护无效Application_Start(){/ /这应该是在这种方法的行#1 GlobalConfiguration.Configure(WebApiConfig.Register); }

  6. 添加以下类(我在global.asax.cs文件中添加)

    公共静态类WebApiConfig {公共静态无效注册(HttpConfigurationconfiguration){/ / Web API路由config.MapHttpAttributeRoutes();

      config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } 

    }

  7. 相应地修改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(); } } 

    }

  8. 重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。

  1. 添加以下名称空间引用:

    使用System.Web.Http; 使用System.Web.Routing;

  2. 如果代码尚未定义Application_Start方法,请添加以下方法:

    protected void Application_Start(){}

  3. 将以下行添加到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。

显示Web API选项的项目模板