我正在为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();
}
}
AttributeY
是ActionFilterAttribute
并实施OnActionExecuting(HttpActionContext actionContext)
方法。
在此实现中,我希望列出操作Echo
的所有操作参数,仅过滤那些具有AttributeX
属性的操作参数。
我怎么能这样做?
DoSomethingWithAction
,都会调用OnActionExecuting
,其中的上下文包含有关DoSomethingWithAction
操作的信息,而不是Echo
操作。