如何在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" }; } } }