如何从 config.json 为控制器中的所有动作设置路由的公共部分(前缀)?

How to set common part of route (Prefix) from config.json for all Actions in Controller?

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

[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'

如何从 config.json

设置前缀 [Route("api/version/v1")]

我试过从 Startupt.cs

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

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

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

但是好像没有效果。 api 路由如下所示:'/receipts/verifyReceipt'

知道我做错了什么吗?

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

app.UseRouting()

之前调用
app.UsePathBase(apiCommon.Value);

Global route prefixing in ASP.NET Core MVC

上找到了我的问题的解决方案