我希望将 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。在注册默认 Web 应用程序路由之前,在 MvcApplication.Application_Start()(在文件 Global.asax.cs 中)中调用 WebApiConfig.Register(GlobalConfiguration.Configuration),否则会优先。添加从 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 });
}
}
全球.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);
}
2015 年 16 月 10 日更新:
Word 有它,必须安装 NuGet 包 Microsoft.AspNet.WebApi 才能使上述工作。
更新 11/22/2013 - 这是最新的 WebApi 包:
Install-Package Microsoft.AspNet.WebApi
原始答案(这是一个较旧的 WebApi 包)
Install-Package AspNetWebApi
更多details。
Install-Package Microsoft.AspNet.WebApi
。请参阅nuget.org/packages/Microsoft.AspNet.WebApi
在我的 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 Add Application_Start 方法进行相应修改,如果没有保护 void Application_Start() { //这应该是此方法中的第 1 行 GlobalConfiguration.Configure(WebApiConfig.Register); } 添加以下类(我在 global.asax.cs 文件中添加) public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } 相应地修改 web api 方法 namespace
只要在控制器文件夹下添加“WebApi 控制器”,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);
Install-Package Microsoft.AspNet.WebApi
2. 添加新项目“Web API Controller Class (v2.1)”。结果:添加 api 控制器但不更改 Application_Start
。与欧文。
您可以从 nuget 安装,如下图所示:
https://i.stack.imgur.com/5JbUu.png
或者,在包管理器控制台上运行以下命令行:
Install-Package Microsoft.AspNet.WebApi
在开始合并 MVC 和 Web API 项目之前,我建议您阅读 cons and pros 以将它们分开为不同的项目。一件非常重要的事情(我自己的)是身份验证系统,这是完全不同的。
如果您需要在 MVC 和 Web API 上使用经过身份验证的请求,您需要记住 Web API 是 RESTful(不需要保持会话、简单的 HTTP 请求等),但 MVC 不是。
要查看实现的差异,只需在 Visual Studio 2013 中从模板创建 2 个不同的项目:一个用于 MVC,一个用于 Web API(不要忘记在创建过程中打开“个人身份验证”)。你会在 AuthencationControllers 中看到很多不同。
所以,请注意。
注意:这只是上面 this answer 的缩写
打开 NuGet 包管理器控制台并运行 PM> Install-Package Microsoft.AspNet.WebApi 添加对 System.Web.Routing、System.Web.Net 和 System.Net.Http dll 的引用(如果还没有) 添加以下类 public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } 添加 Application_Start 方法,如果还没有(在 global.asax.cs 文件中) protected void Application_Start() { //这应该是此方法中的第 1 行 GlobalConfiguration.Configure(WebApiConfig.Register); } 右键单击控制器文件夹 > 添加新项目 > web > 添加 Web API 控制器命名空间
上述解决方案完美运行。我更喜欢在选择项目模板时选择 Web API 选项,如下图所示
注意:该解决方案适用于 Visual Studio 2013 或更高版本。最初的问题是在 2012 年提出的,现在是 2016 年,因此添加了 Visual Studio 2013 或更高版本的解决方案。
https://i.stack.imgur.com/3vx1R.gif
我有同样的问题,解决方法很简单
右键单击从“管理 Sulotion 的 Nuget 包”中安装 Microsoft.ASP.NET.WebApi 的 solotion
繁荣就是这样;)
System.Net.Http
的引用,但除此之外,它就像一个魅力!