首页 > 解决方案 > 如何从 config.json 为控制器中的所有操作设置路由的公共部分(前缀)?

问题描述

我有一个带有 Route 属性的控制器以及每个带有它自己的 Route 的 Action,例如:

[Route("api/version/v1")]
public class MyController : ControllerBase
{
   [Route("receipts/verifyReceipt")]
   public IActionResult VerifyReceipt(...){....}
   
   ...... several actions with diffrent Routes

}

我的目标是有 api 路线:'api/version/v1/receipts/verifyReceipt'

如何[Route("api/version/v1")]从 config.json设置前缀

我尝试从 Startupt.cs 进行设置

app.UseMvc(routes =>
        {
            routes.MapRoute( "default",  apiCommon.Value);
        });

其中 'apiCommon.Value' 是我的前缀 'api/version/v1' 在向 MyController 添加路由属性时:

[Route("", Name = "default")]

但这似乎没有任何效果。api 路由看起来像这样:'/receipts/verifyReceipt'

任何想法我做错了什么?

标签: asp.net-coreroutesasp.net-mvc-routing

解决方案


我认为UsePathBase()最适合您的需求。它在指定的路径库使用后进行路由

之前调用它app.UseRouting()

app.UsePathBase(apiCommon.Value);

推荐阅读