首页 > 解决方案 > 在 ASP.NET CORE 中动态更改 Route 属性值

问题描述

我正在寻找一种在语法上更改 Route 属性值的方法。

我有一个api路由应该是的场景:

  1. [Route("api/v1/[Controller]")]或者
  2. [Route("api/xyz/v1/[Controller]")]

基于我是否在调试模式下运行它。

[Route("api/v1/[Controller]")]
[ApiController]  
public class MyController : BaseController
{
}

我尝试在 Base Controller 中添加一个变量,但意识到我无法在 Route 属性中访问它。

标签: c#asp.net-mvcasp.net-core.net-corerouting

解决方案


编译后不能更改属性的值,因为属性是编译时常量。这也是为什么您不能使用控制器类中的变量作为参数的原因(除非它是const

相反,您可以使用预处理器指令来执行此操作

#if DEBUG
[Route("api/v1/[Controller]")]
#else
[Route("api/xyz/v1/[Controller]")]
#endif

(您可能希望将其更改为if RELEASE并更改为路线)


推荐阅读