ASP.NET Web API - actionContext - 获取其他controller.action的actionDescriptor

时间:2017-12-16 18:00:30

标签: c# asp.net asp.net-mvc asp.net-web-api

我正在为ASP.NET制作一些响应缓存中间件。 其中一个功能是在执行特定操作时使某些操作的缓存无效。

免除了有关如何实现缓存密钥逻辑的详细信息,我将直接回答这个问题。

这是一个有两个动作的控制器:

public class EchoController : ApiController
{
    [HttpGet]
    [Route("api/echo/{userId}/{message}")]
    public async Task<IHttpActionResult> Echo(
        [AttributeX] string userId,
        [AttributeX] string message,
        string queryString)
    {
        await Task.Delay(150);
        return Ok(new {Action = "Echo", UserId = userId, Message = message, QueryString = queryString});
    }

    [HttpPost]
    [Route("api/echo/dosomething")]
    [AttributeY(ActionName = "Echo")]
    public async Task<IHttpActionResult> DoSomethingWithAction(string userId, string message)
    {
        await Task.Delay(150);
        return Ok();
    }
}

AttributeYActionFilterAttribute并实施OnActionExecuting(HttpActionContext actionContext)方法。

在此实现中,我希望列出操作Echo 的所有操作参数,仅过滤那些具有AttributeX属性的操作参数。

我怎么能这样做?

  • 提醒您,无论何时调用操作DoSomethingWithAction,都会调用OnActionExecuting,其中的上下文包含有关DoSomethingWithAction操作的信息,而不是Echo操作。

0 个答案:

没有答案