我正在尝试创建一个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" };
}
}
只是不太确定我错过了什么或做错了什么,或者是否真的能做到这一点。
答案 0 :(得分:1)
如果子项目没有配置为主项目的依赖项,我也不知道如何做到这一点。
新的ASP.NET Core中的Areas是一个逻辑上将命名空间和视图分开的功能(视图在该区域中定义)。您仍然需要在主项目中拥有控制器来监听该路由。
我想知道,你如何运行子项目?分别完全独立于主要的一个?在这种情况下,您肯定需要一个不同的协议/端口来执行它们,并且路由根本不适用于它们(在主项目中)。