asp.net-web-api – WebApi:如何将状态从过滤器传递给控制器​​?

前端之家收集整理的这篇文章主要介绍了asp.net-web-api – WebApi:如何将状态从过滤器传递给控制器​​?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在拉动一些用户数据的动作过滤器,并且可以在控制器的操作中使用一些数据,但不完全确定如何将数据从过滤器传递到控制器。
在MVC中,我可能会使用会话或HttpContext.Items,但它不可用于web api。另一个选择是使用ThreadStatic,但我认为必须有更好的解决方案?

解决方法

您可以使用Request.Properties字典来做到这一点。

在过滤器中:

MyType myObject = //initialize from somwhere
actionContext.Request.Properties.Add("mykey",myObject);

然后你可以在控制器中检索它:

object myObject;
Request.Properties.TryGetValue("mykey",out myObject);
//cast to MyType

这种方法的优点是当前的请求实例可以在Web API管道中的任何地方使用,因此您可以访问此对象,即在Formatter或MessageHandler中。

猜你在找的asp.Net相关文章