首页 文章

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

提问于
浏览
337

我希望将ASP.NET Web API添加到Visual Studio 2012中开发的ASP.NET MVC 4 Web应用程序项目中 . 我必须执行哪些步骤才能为项目添加正常运行的Web API?我只知道我所知道的一切 .

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

7 回答

  • 16

    To add WebAPI in my MVC 5 project.

    • 打开NuGet包管理器consol并运行
    PM> Install-Package Microsoft.AspNet.WebApi
    
    • 添加对System.Web.Routing,System.Web.Net和System.Net.Http dlls的引用,如果不存在的话

    • 右击控制器文件夹>添加新项> Web>添加Web API控制器

    • VS.将相应地修改Web.config

    • 如果没有,则添加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>
    
  • 72

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

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

    Project template showing web API option

  • 427

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

    Install-Package Microsoft.AspNet.WebApi
    

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

    Install-Package AspNetWebApi
    

    更多details .

  • 44

    只要在控制器文件夹下添加“WebApi Controller”,Visual Studio就会自动处理依赖关系;

    Visual Studio已将ASP.NET Web API 2的完整依赖项添加到项目“MyTestProject”中 . 项目中的Global.asax.cs文件可能需要进行其他更改才能启用ASP.NET Web API . 添加以下命名空间引用:using System.Web.Http;使用System.Web.Routing;如果代码尚未定义Application_Start方法,请添加以下方法:protected void Application_Start(){}将以下行添加到Application_Start方法的开头:GlobalConfiguration.Configure(WebApiConfig.Register);

  • 2

    我需要执行的步骤是:

    • 添加对 System.Web.Http.WebHost 的引用 .

    • 添加 App_Start\WebApiConfig.cs (请参阅下面的代码段) .

    • Global.asax.cs 中导入名称空间 System.Web.Http .

    • MvcApplication.Application_Start() (文件 Global.asax.cs )中调用 WebApiConfig.Register(GlobalConfiguration.Configuration) ,然后注册默认Web应用程序路由,否则优先 .

    • 添加一个派生自 System.Web.Http.ApiController 的控制器 .

    然后我可以从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);
    }
    

    Update 10.16.2015:

    Word有它,必须安装NuGet包Microsoft.AspNet.WebApi才能使上述工作正常 .

  • 21

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

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

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

    所以,请注意 .

  • 26

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

    enter image description here

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

    Install-Package Microsoft.AspNet.WebApi
    

相关问题