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

时间:2016-02-25 09:35:29

标签: c# asp.net asp.net-core asp.net-web-api-routing

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

[Route("api/[controller]")]
public class NovosController : Controller
{
    // GET: api/values

    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "i am", "an external library" };
    }

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

结果如下:

dnx451

dnxcore50

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

例如:

如果是外部库:

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

没有给我任何回报

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

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

返回“我是外部图书馆”

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

1 个答案:

答案 0 :(得分:0)

只要您符合以下要求,IControllerTypeProvider就不需要任何特殊的内容来发现外部类库:

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

Source

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

using Microsoft.AspNet.Mvc;
using System.Collections.Generic;

namespace External.Controllers
{
    [Route("api/[controller]")]
    public class NovosController: Controller
    {
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "I am", "an external library" };
        }
    }
}