从端点获取参数以及控制器和操作名称

Get Parameters along with controller and action name from endpoint

我有一个接收 id 的 HttpGet 端点。我已经弄清楚如何获取控制器和操作名称,但我还想获取端点中使用的参数,因为我希望能够将它们与普通的默认 GET 区分开来。

这是我想要的端点和示例:

// GET: api/PatientSearch/5
[HttpGet("{id}", Name = "Get")]
public string Get(int id)
{
    _customLogger.LogInfoEvent(this.ControllerContext.RouteData.Values["controller"].ToString(), this.ControllerContext.RouteData.Values["action"].ToString());

    return "value";
}

这目前有效并将操作记录为 'Get' 但 id' 喜欢它记录为 'Get {id}'

var q = ControllerContext.RouteData.Values["id"];

var q = id;
// GET: api/PatientSearch/5
    [HttpGet("{id}", Name = "Get")]
    public string Get(int id)
    {
        var parameters = MethodBase.GetCurrentMethod().GetParameters();
        var paramNames = String.Join(", ", parameters.Select(p => p.Name)); // myString, myInt


        return this.ControllerContext.RouteData.Values["action"] + "{"+ paramNames + "}";
    }

测试结果截图:

public string Get(int id)

public string Get(int id, string str)