我在动作过滤器中提取了一些用户数据,并且可以在控制器的操作中使用一些数据,但不完全确定如何将数据从过滤器传递到控制器.在MVC中,我可能会使用session或HttpContext.Items,但它在web api中不可用.另一种选择是使用ThreadStatic,但我认为必须有更好的解决方案?
Fil*_*p W 58
你可以使用Request.Properties字典来做到这一点.
在过滤器中:
MyType myObject = //initialize from somwhere
actionContext.Request.Properties.Add("mykey", myObject);
Run Code Online (Sandbox Code Playgroud)
然后你可以在控制器中检索它:
object myObject;
Request.Properties.TryGetValue("mykey", out myObject);
//cast to MyType
Run Code Online (Sandbox Code Playgroud)
此方法的优点是当前请求实例在Web API管道中的任何位置都可用,因此您也可以访问此对象,即在Formatter或MessageHandler中.
| 归档时间: |
|
| 查看次数: |
9964 次 |
| 最近记录: |