WEB API:如何将值从ActionFilter传递到Repository

时间:2015-06-22 06:23:55

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

我有ActionFilter从Request Header获取一些值。然后我将它们存储在Request.Properties中,如下所示:

actionContext.Request.Properties.Add("technician", username);
actionContext.Request.Properties.Add("secret", secret);

现在我想在TaskRepository

中获取此值

我的控制器构造函数:

public TaskController(ITaskRepository repository)  
{
    _repository = repository;
}

我无法在此获取属性,因为ActionFilters正在执行已经选择和创建控制器时。

我可以在Controller的每个动作中获取属性并将它们传递给存储库,但我认为这不是正确的方法。

我的问题是如何将值从ActionFilter传递到Repository

谢谢你的时间。

1 个答案:

答案 0 :(得分:2)

我终于做到了。

首先,我为此Extension编写IHTTPController方法:

public static void SetCredentialsToRepository(this IHttpController controller, string technician, string secret);

然后我实现这个函数:

public void SetCredentialsToRepository(string technician, string secret)
{
    _repository.SetCredentials(technician, secret);
}

然后在我的ActionFilter中我调用这个方法:

actionContext.ControllerContext.Controller.SetCredentialsToRepository(username, secret);