C# 我可以在没有MVC6的情况下将WebApi添加到ASP.NET 5(vnext)项目中吗?

C# 我可以在没有MVC6的情况下将WebApi添加到ASP.NET 5(vnext)项目中吗?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我有一个普通的html/javascript站点,我准备添加一些WebApi内容。在asp.NET4中,我只需从NuGet添加WebApi,就可以开始添加继承自ApicController的ApicController(在全局文件中进行少量设置后) 我在一个ASP.NET5(vnext)项目中尝试了这个方法,但没有成功。使用System.Web.Http添加是否在我的课堂上摆脱了ApiController下的蠕动: [Route("api/contact/requestACall")] publ

我有一个普通的html/javascript站点,我准备添加一些WebApi内容。在asp.NET4中,我只需从NuGet添加WebApi,就可以开始添加继承自ApicController的ApicController(在全局文件中进行少量设置后)

我在一个ASP.NET5(vnext)项目中尝试了这个方法,但没有成功。使用System.Web.Http添加
是否在我的课堂上摆脱了
ApiController
下的蠕动:

[Route("api/contact/requestACall")]
public class ContactController : ApiController
{
}
…我在尝试编译时仍然出错

错误CS0246找不到类型或命名空间名称“Route”(是否缺少using指令或程序集引用?[my namespace]。DNX Core 5.0[my project path]\Controllers\ContactController.cs 5

错误CS0246找不到类型或命名空间名称“ApiController”(是否缺少using指令或程序集引用?[my namespace]。DNX Core 5.0[my project path]\Controllers\ContactController.cs 6

我在谷歌上搜索了几个小时,我能找到的每一个演练都是为了添加api控制器而添加MVC6。然而,我在这个站点中不需要任何MVC功能,因为我使用angular并在客户机上完成所有这些


我如何使用WebApi而不带上所有这些MVC包袱?我知道ASP.NET 5的全部目的是确保您不必包含您不打算使用的内容,因此我确信我遗漏了一些内容。

简单的回答是您不能。vNext中已经组合了多个框架

源代码的文档清楚地描述了这个特殊的分支:模型-视图-控制器框架,用于构建清晰分离关注点的动态网站,包括合并的MVC、web API和带有Razor的web页面。我对此的解释是,是的,它们是完全合并的,不能也不应该在vNext下分开

此外,如果查看vNext中的for
ApiController
,您会发现包含以下参考:

using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.ActionResults;
using Microsoft.AspNet.Mvc.Actions;
using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Mvc.ModelBinding.Validation;
using Microsoft.AspNet.Mvc.WebApiCompatShim;
这使得如果没有ASP.NET 5中的核心MVC依赖项,就无法使用
ApicController

根据这些评论,如果您查看这些,您会发现“WebAPI”控制器(主要负责返回api数据而不是web内容的控制器)继承自
Controller

using Microsoft.AspNet.Mvc;
...
Route("api/[controller]")]
public class TodoController : Controller
总之,在vNext中,无论交付的内容类型如何,您都只应该使用一个控制器,
controller
,并且它应该来自
Microsoft.AspNet.Mvc


System.Web.Http
已被弃用,并且在vNext中没有使用
Microsoft.AspNet.WebAPI

简单的回答是您不能。vNext中已经组合了多个框架

源代码的文档清楚地描述了这个特殊的分支:模型-视图-控制器框架,用于构建清晰分离关注点的动态网站,包括合并的MVC、web API和带有Razor的web页面。我对此的解释是,是的,它们是完全合并的,不能也不应该在vNext下分开

此外,如果查看vNext中的for
ApiController
,您会发现包含以下参考:

using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.ActionResults;
using Microsoft.AspNet.Mvc.Actions;
using Microsoft.AspNet.Mvc.ModelBinding;
using Microsoft.AspNet.Mvc.ModelBinding.Validation;
using Microsoft.AspNet.Mvc.WebApiCompatShim;
这使得如果没有ASP.NET 5中的核心MVC依赖项,就无法使用
ApicController

根据这些评论,如果您查看这些,您会发现“WebAPI”控制器(主要负责返回api数据而不是web内容的控制器)继承自
Controller

using Microsoft.AspNet.Mvc;
...
Route("api/[controller]")]
public class TodoController : Controller
总之,在vNext中,无论交付的内容类型如何,您都只应该使用一个控制器,
controller
,并且它应该来自
Microsoft.AspNet.Mvc


System.Web.Http
已被弃用,而且在vNext中根本没有使用
Microsoft.AspNet.WebAPI

这不是您习惯的MVC“包袱”。在vNext/ASP.NET 5中,这两个框架都整合到一个单一的、优化的API中,该API充分利用了两者的优点。在过去,离开MVC可能是值得的,但这是一个大胆的新世界,需要一种新的思维方式。旧规则不再适用:)你是说WebApi不能单独使用吗?你能肯定地说吗?我想知道为什么会有单独的包裹。源代码的文档清楚地描述了这个特殊的分支:模型-视图-控制器框架,用于构建清晰分离关注点的动态网站,包括合并的MVC、web API和带有Razor的web页面。我对这一点的理解是,它们是完全合并的,不能也不应该在vNext下分开。这不是你习惯的MVC“包袱”。在vNext/ASP.NET 5中,这两个框架都整合到一个单一的、优化的API中,该API充分利用了两者的优点。在过去,离开MVC可能是值得的,但这是一个大胆的新世界,需要一种新的思维方式。旧规则不再适用:)你是说WebApi不能单独使用吗?你能肯定地说吗?我想知道为什么会有单独的包裹。源代码的文档清楚地描述了这个特殊的分支:模型-视图-控制器框架,用于构建清晰分离关注点的动态网站,包括合并的MVC、web API和带有Razor的web页面。我的解释是,它们是完全合并的,不能也不应该在vNext下分离。如果webapi依赖于mvc,那么为什么webapi包不依赖于mvc包呢?另外,您链接的源不是我尝试使用的类。我尝试使用System.Web.Http.ApiController。看起来它是一个抽象类,这是我的问题,但可能仍然有一些web api控制器继承自