如何将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_StartWebApiConfig.cs (请参阅下面的代码片段)。 Global.asax.cs导入命名空间System.Web.Http 。 MvcApplication.Application_Start() (在文件Global.asax.cs )中调用WebApiConfig.Register(GlobalConfiguration.Configuration) ,否则将优先注册。 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才能正常工作。
UPDATE 11/22/2013 - 这是最新的WebApi软件包:
Install-Package Microsoft.AspNet.WebApi
原始答案(这是一个较旧的WebApi包)
Install-Package AspNetWebApi
更多细节。
在我的MVC 5项目中添加WebAPI。
打开NuGet程序包管理器并运行
PM> Install-Package Microsoft.AspNet.WebApi
如果不存在,请添加对System.Web.Routing,System.Web.Net和System.Net.Http dll的引用
右键单击控制器文件夹>添加新项目> Web>添加Web API控制器
Web.config将相应地由VS进行修改
如果不存在,添加Application_Start(){}方法
protected void Application_Start()
{
    //this should be line #1 in this method
    GlobalConfiguration.Configure(WebApiConfig.Register);
}
添加以下类(我添加在global.asax.cs文件中)
public static class WebApiConfig
{
     public static void Register(HttpConfiguration config)
     {
         // Web API routes
         config.MapHttpAttributeRoutes();
         config.Routes.MapHttpRoute(
             name: "DefaultApi",
             routeTemplate: "api/{controller}/{id}",
             defaults: new { id = RouteParameter.Optional }
         );
     }
 }
相应地修改web api方法
namespace <Your.NameSpace.Here>
{
    public class VSController : ApiController
    {
        // GET api/<controller>   : url to use => api/vs
        public string Get()
        {
            return "Hi from web api controller";
        }
        // GET api/<controller>/5   : url to use => api/vs/5
        public string Get(int id)
        {
            return (id + 1).ToString();
        }
    }
}
重建和测试
建立一个简单的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>
上一篇: How to add Web API to an existing ASP.NET MVC 4 Web Application project?
下一篇: Why both SqlConnection and SqlTransaction are present in SqlCommand constructor?
