路由到多个项目

时间:2018-06-14 23:51:04

标签: c# asp.net-core

我正在尝试创建一个webapi解决方案,该解决方案包含主项目和其他项目作为附加端点。如果其他项目不能成为主要的依赖项,那也会很好。

结构将类似于:

MainWebApiProject   accessed as example.com/api/Values 
   SubProject1  accessed as example.com/sub1/Values
   SubProject2  accessed as example.com/sub2/Values

我已经为这3个项目创建了一个解决方案。我尝试使用区域和不使用区域在MainWebApiProject的startup.cs中设置路由。

区域的例子

app.UseMvc(routes =>
{
    routes.MapAreaRoute("subProject1_route", "subProject1", "sub1/{controller}/{action}/{id?}");
    routes.MapAreaRoute("subProject2_route", "subProject2", "sub2/{controller}/{action}/{id?}");
    routes.MapRoute("default_route", "{controller}/{action}/{id?}");
});

然后是SubProject1内的控制器

[Area("subProject1")]
[Route("sub1/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    // GET api/values
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "sub 1 value1", "sub 1 value2" };
    }
}

只是不太确定我错过了什么或做错了什么,或者是否真的能做到这一点。

1 个答案:

答案 0 :(得分:1)

如果子项目没有配置为主项目的依赖项,我也不知道如何做到这一点。

新的ASP.NET Core中的

Areas是一个逻辑上将命名空间和视图分开的功能(视图在该区域中定义)。您仍然需要在主项目中拥有控制器来监听该路由。

我想知道,你如何运行子项目?分别完全独立于主要的一个?在这种情况下,您肯定需要一个不同的协议/端口来执行它们,并且路由根本不适用于它们(在主项目中)。