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

时间:2012-08-16 14:58:39

标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api visual-studio-2012

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

如果我需要提供更多详细信息,请与我们联系。

9 个答案:

答案 0 :(得分:440)

我需要执行的步骤是:

  1. 添加对System.Web.Http.WebHost
  2. 的引用
  3. 添加App_Start\WebApiConfig.cs(请参阅下面的代码段)。
  4. System.Web.Http
  5. 中导入名称空间Global.asax.cs
  6. WebApiConfig.Register(GlobalConfiguration.Configuration)(文件MvcApplication.Application_Start()),注册默认Web应用程序路由之前,在中调用Global.asax.cs,否则优先。
  7. 添加源自System.Web.Http.ApiController
  8. 的控制器

    然后我可以从the tutorial(您的第一个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才能使上述工作正常。

答案 1 :(得分:76)

更新2013年11月22日 - 这是最新的WebApi软件包:

Install-Package Microsoft.AspNet.WebApi

原始答案(这是一个较旧的WebApi包)

Install-Package AspNetWebApi

更多details

答案 2 :(得分:60)

在我的MVC 5项目中添加WebAPI。

  1. 打开NuGet包管理器控制台并运行

    viewDidLoad
  2. 添加对- (void)viewDidLoad { [super viewDidLoad]; self.tableView.estimatedRowHeight = 44; self.tableView.rowHeight = UITableViewAutomaticDimension; } PM> Install-Package Microsoft.AspNet.WebApi System.Web.Routing dll的引用(如果不存在)

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

  4. 将通过VS

  5. 相应地修改Web.config
  6. 如果尚未添加System.Web.Net方法

    System.Net.Http
  7. 添加以下类(我在global.asax.cs文件中添加)

    Application_Start
  8. 相应地修改web api方法

    protected void Application_Start()
    {
        //this should be line #1 in this method
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
    
  9. 重建并测试

  10. 构建一个简单的html页面

    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 }
             );
         }
     }
    

答案 3 :(得分:26)

只要在控制器文件夹下添加“WebApi Controller”,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.   
  3. 如果代码尚未定义Application_Start方法,请添加以下方法:

         

    protected void Application_Start()   {   }

  4.   
  5. 将以下行添加到Application_Start方法的开头:

         

    GlobalConfiguration.Configure(WebApiConfig.Register);

  6.   

答案 4 :(得分:22)

您可以从nuget安装,如下图所示:

enter image description here

或者,在程序包管理器控制台上运行以下命令行:

Install-Package Microsoft.AspNet.WebApi

答案 5 :(得分:19)

在开始合并MVC和Web API项目之前,我建议您阅读cons and pros以将这些项目分开作为不同的项目。一个非常重要的事情(我自己的)是身份验证系统,这是完全不同的。

如果您需要在MVC和Web API上使用经过身份验证的请求,您需要记住Web API是RESTful(不需要保持会话,简单的HTTP请求等),但MVC不是。

要了解实现的差异,只需在模板中在Visual Studio 2013中创建2个不同的项目:一个用于MVC,一个用于Web API(不要忘记打开"个人身份验证"期间创建)。您将在AuthencationControllers中看到很多不同。

所以,请注意。

答案 6 :(得分:3)

上述解决方案完美无缺。我更喜欢在选择项目模板时选择Web API选项,如下图所示

注意:该解决方案适用于Visual Studio 2013或更高版本。最初的问题是在2012年提出的,它是2016年,因此添加了Visual Studio 2013或更高版本的解决方案。

Project template showing web API option

答案 7 :(得分:3)

注意:这只是上面this answer的缩写

  1. 打开NuGet软件包管理器控制台并运行

    PM> Install-Package Microsoft.AspNet.WebApi
    
  2. 添加对System.Web.RoutingSystem.Web.NetSystem.Net.Http dll的引用(如果尚不存在)

  3. 添加以下课程

    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 }
             );
         }
     }
    
  4. 添加Application_Start方法(如果尚未存在)(在global.asax.cs文件中)

    protected void Application_Start()
    {
        //this should be line #1 in this method
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
    
  5. 右键单击控制器文件夹>添加新项目>网站>添加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";
            }  
        }
    }
    

答案 8 :(得分:0)

我遇到了同样的问题,解决方案非常简单

右键单击solotion 从“管理Sulotion的Nuget程序包”中安装Microsoft.ASP.NET.WebApi

就是这样;)