如何在Web API ASP NET 5中路由外部类库

我在ASP NET 5中创建了一个WEB API,我可以引用外部类库vNext。 我正在开发Visual Studio 2015社区。 在那个库里我有这个控制器:

[Route("api/[controller]")] public class NovosController : Controller { // GET: api/values [HttpGet] public IEnumerable Get() { return new string[] { "i am", "an external library" }; } 

要在我的Web API引用中添加此库,我必须浏览DLL(一个用于dnxcore50,另一个用于dnx451)。

这是结果:

dnx451

dnxcore50

在我的Web API中,我可以从该控制器获取数据,但我无法从URL访问它。 但是如果库在同一个解决方案中,我可以从URL访问它。

例如:

如果是外部库:

本地主机:51000 / API /诺沃斯

没有回报我

但如果库在同一解决方案中:

本地主机:51000 / API /诺沃斯

给我回报“我是一个外部图书馆”

我希望通过URL访问外部库,但我找不到任何问题的解决方案,有没有人知道如何使这个东西工作?

只要您符合以下要求, IControllerTypeProvider就不需要任何特殊的东西来允许您的外部类库被发现:

  • 必须上课
  • 不能抽象
  • 必须公开
  • 必须是顶级(不是嵌套)
  • 不能是通用的
  • 必须从Controller基类派生或以Controller后缀(对于POCO)结束,并且位于引用MVC程序集的程序集中

( 来源 )

在您的特定情况下,我认为您只需要删除Route注释,因为它看起来不正确。

 using Microsoft.AspNet.Mvc; using System.Collections.Generic; namespace External.Controllers { [Route("api/[controller]")] public class NovosController: Controller { [HttpGet] public IEnumerable Get() { return new string[] { "I am", "an external library" }; } } }