【发布时间】:2014-07-10 22:25:51
【问题描述】:
我有一个 Web API 服务,它通过请求标头传入 ApiKey。从 ActionFilterAttribute 派生的自定义操作过滤器 (AuthenticationRequiredAttribute) 会覆盖 OnActionExecuting 方法并执行 DB 调用以获取与有效 ApiKey 关联的 ClientId。我可以通过HttpActionContext.Request.Properties.Add ("clientID", clientID) 将ClientID 分配为属性,但是我无法在控制器操作方法中访问关联的actionContext 对象,因此它没有任何价值。
当然这是一种常见的情况,但我找不到一个很好的例子来处理它。如何将 HttpActionContext 实例放入控制器类中?
这是过滤器:
public override void OnActionExecuting(HttpActionContext actionContext)
在其中,我得到了 ClientID,但我看不到如何将它传递给下面的方法:
这是Controller的方法:
[Route("v1/stock/{SecurityId}/text")]
public HttpResponseMessage GetSummaryTextV1(string SecurityId, string topic = "")
HttpActionContext 在其中不可用。我这里需要ClientID,但是拿不到。
有没有办法可以将当前的 actionContext 传递给 Controller 构造函数?
不知所措,暂时硬连线 clientId,这样我就可以继续了。
【问题讨论】:
标签: asp.net-web-api