我希望在Visual Studio 2012中开发的ASP.NET MVC 4 Web应用程序项目中添加ASP.NET Web API。我必须执行哪些步骤才能为项目添加正常运行的Web API?我知道我需要一个从ApiController派生的控制器,但这就是我所知道的。
如果我需要提供更多详细信息,请与我们联系。
答案 0 :(得分:440)
我需要执行的步骤是:
System.Web.Http.WebHost
。App_Start\WebApiConfig.cs
(请参阅下面的代码段)。System.Web.Http
。Global.asax.cs
WebApiConfig.Register(GlobalConfiguration.Configuration)
(文件MvcApplication.Application_Start()
),注册默认Web应用程序路由之前,在中调用Global.asax.cs
,否则优先。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);
}
更新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。
打开NuGet包管理器控制台并运行
viewDidLoad
添加对- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.estimatedRowHeight = 44;
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
,PM> Install-Package Microsoft.AspNet.WebApi
和System.Web.Routing
dll的引用(如果不存在)
右键单击控制器文件夹>添加新项目>网络>添加Web API控制器
将通过VS
如果尚未添加System.Web.Net
方法
System.Net.Http
添加以下类(我在global.asax.cs文件中添加)
Application_Start
相应地修改web api方法
protected void Application_Start()
{
//this should be line #1 in this method
GlobalConfiguration.Configure(WebApiConfig.Register);
}
重建并测试
构建一个简单的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。
添加以下命名空间引用:
使用System.Web.Http; 使用System.Web.Routing;
如果代码尚未定义Application_Start方法,请添加以下方法:
protected void Application_Start() { }
- 醇>
将以下行添加到Application_Start方法的开头:
GlobalConfiguration.Configure(WebApiConfig.Register);
答案 4 :(得分:22)
您可以从nuget安装,如下图所示:
或者,在程序包管理器控制台上运行以下命令行:
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或更高版本的解决方案。
答案 7 :(得分:3)
注意:这只是上面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 routes
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()
{
//this should be line #1 in this method
GlobalConfiguration.Configure(WebApiConfig.Register);
}
右键单击控制器文件夹>添加新项目>网站>添加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
就是这样;)