我希望将ASP.NET Web API添加到在Visual Studio 2012中开发的ASP.NET MVC 4 Web应用程序项目中。我必须执行哪些步骤才能将正常运行的Web API添加到项目中?我知道我需要一个派生自ApiController的控制器,但这仅是我所知道的。
让我知道是否需要提供更多详细信息。
我希望将ASP.NET Web API添加到在Visual Studio 2012中开发的ASP.NET MVC 4 Web应用程序项目中。我必须执行哪些步骤才能将正常运行的Web API添加到项目中?我知道我需要一个派生自ApiController的控制器,但这仅是我所知道的。
让我知道是否需要提供更多详细信息。
Answers:
我需要执行的步骤是:
System.Web.Http.WebHost
。App_Start\WebApiConfig.cs
(请参见下面的代码段)。System.Web.Http
在Global.asax.cs
。WebApiConfig.Register(GlobalConfiguration.Configuration)
在MvcApplication.Application_Start()
(在文件中Global.asax.cs
)进行调用,否则它将优先。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);
}
2015年10月16日更新:
Word拥有它,必须安装NuGet包Microsoft.AspNet.WebApi才能使上述内容起作用。
UPDATE 11/22/2013-这是最新的WebApi软件包:
Install-Package Microsoft.AspNet.WebApi
原始答案(这是一个较旧的WebApi软件包)
Install-Package AspNetWebApi
更多细节。
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
右键单击controllers文件夹>添加新项> web> Add Web API controller
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>
在controllers文件夹下添加“ 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方法,请添加以下方法:
受保护的void Application_Start(){}
将以下行添加到Application_Start方法的开头:
GlobalConfiguration.Configure(WebApiConfig.Register);
Install-Package Microsoft.AspNet.WebApi
2.添加新项“ Web API控制器类(v2.1)”。结果:添加了api控制器,但未更改Application_Start
。和欧文一起
您可以从nuget进行安装,如下图所示:
或者,在程序包管理器控制台上运行以下命令行:
Install-Package Microsoft.AspNet.WebApi
在开始合并MVC和Web API项目之前,我建议阅读有关缺点和优点的文章,以将它们分为不同的项目。身份验证系统是一件非常重要的事情(我自己的事情),它是完全不同的。
如果您需要同时在MVC和Web API上使用经过身份验证的请求,则需要记住Web API是RESTful的(不需要保留会话,简单的HTTP请求等),而MVC则不是。
要查看实现的差异,只需在Visual Studio 2013中从模板创建两个不同的项目:一个用于MVC,一个用于Web API(请不要忘记在创建过程中打开“个人身份验证”)。您将在AuthencationControllers中看到很多差异。
因此,请注意。
注意:这只是以上答案的缩写
打开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);
}
右键单击controllers文件夹>添加新项> web> Add Web API controller
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";
}
}
}
上面的解决方案完美地工作。我更喜欢在选择项目模板时选择Web API选项,如下图所示
注意:该解决方案适用于Visual Studio 2013或更高版本。最初的问题是在2012年提出的,现在是2016年,因此添加了Visual Studio 2013或更高版本的解决方案。
System.Net.Http
对它的引用,但除此之外,它的作用还很吸引人!