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

如果我需要提供更多细节,请告诉我。


当前回答

只要你在controllers文件夹下添加了一个“WebApi Controller”,Visual Studio就会自动处理依赖关系;

Visual Studio has added the full set of dependencies for ASP.NET Web API 2 to project 'MyTestProject'. The Global.asax.cs file in the project may require additional changes to enable ASP.NET Web API. Add the following namespace references: using System.Web.Http; using System.Web.Routing; If the code does not already define an Application_Start method, add the following method: protected void Application_Start() { } Add the following lines to the beginning of the Application_Start method: GlobalConfiguration.Configure(WebApiConfig.Register);

其他回答

我也有同样的问题,解决方法很简单

右击soltion 安装Microsoft.ASP.NET.WebApi从“管理Nuget包Sulotion”

就是这样;)

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

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

Install-Package Microsoft.AspNet.WebApi

在你开始合并MVC和Web API项目之前,我建议你先阅读一下优缺点,把它们区分为不同的项目。一个非常重要的事情(我自己的)是认证系统,这是完全不同的。

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

要查看实现的差异,只需在Visual Studio 2013中从模板创建2个不同的项目:一个用于MVC,一个用于Web API(不要忘记在创建过程中打开“个人认证”)。您将在authenticationcontrollers中看到许多不同之处。

所以,要注意。

只要你在controllers文件夹下添加了一个“WebApi Controller”,Visual Studio就会自动处理依赖关系;

Visual Studio has added the full set of dependencies for ASP.NET Web API 2 to project 'MyTestProject'. The Global.asax.cs file in the project may require additional changes to enable ASP.NET Web API. Add the following namespace references: using System.Web.Http; using System.Web.Routing; If the code does not already define an Application_Start method, add the following method: protected void Application_Start() { } Add the following lines to the beginning of the Application_Start method: GlobalConfiguration.Configure(WebApiConfig.Register);

我需要执行的步骤是:

添加对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的控制器。

然后,我可以从教程(你的第一个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必须安装以上工作。