首页 > 解决方案 > 我如何通过反射从方法中获取路由(Url)

问题描述

我如何通过反射从方法中获取路由(Url)。从控制器和方法,像这样:

[ApiController]
[Authorize]
[Route("api/events/[controller]")]
public class ApprovedWorksController : ControllerBase
{
    ...
    
    [HttpPost]
    public async Task<IEnumerable<ApprovedWorkResponse>> GetAsync(ApprovedWorkFilter filter)
    {
        ...
    }
}

至:

api/events/ApprovedWorks ...

标签: c#asp.net.net

解决方案


我用这个来解决问题:

var routeAttribute = controller.GetCustomAttribute(typeof(RouteAttribute));
      if (routeAttribute != null)
            Console.WriteLine(((RouteAttribute) routeAttribute).Template.Replace("/[controller]", "")
                                 + "/" + controller.Name.Replace("Controller", "")
                                 + "/" + methodInfo.Name);

推荐阅读