C# Web API ActionFilter修改返回值

C# Web API ActionFilter修改返回值,c#,asp.net-web-api,action-filter,C#,Asp.net Web Api,Action Filter,我有一个Web API应用程序,需要通过ActionFilter的OnActionExecuted方法获取一些API端点的返回值 我正在使用一个自定义属性来标识包含需要修改的数据的端点,但是我似乎无法从HttpActionExecutedContext中找到实际的结果对象 谢谢你的帮助 您可以通过Response.Content属性获取返回值。如果您的操作返回了一个对象,则可以将其强制转换为ObjectContent,从中可以获得返回值的实际实例: 公共类MyFilterAttribute:Ac

我有一个Web API应用程序,需要通过ActionFilter的OnActionExecuted方法获取一些API端点的返回值

我正在使用一个自定义属性来标识包含需要修改的数据的端点,但是我似乎无法从HttpActionExecutedContext中找到实际的结果对象


谢谢你的帮助

您可以通过
Response.Content
属性获取返回值。如果您的操作返回了一个对象,则可以将其强制转换为
ObjectContent
,从中可以获得返回值的实际实例:

公共类MyFilterAttribute:ActionFilterAttribute
{
公共覆盖无效OnActionExecuted(HttpActionExecutedContext)
{
var objectContent=context.Response.Content作为objectContent;
if(objectContent!=null)
{
var type=objectContent.ObjectType;//返回对象的类型
var value=objectContent.value;//保存返回值
}
}
}

感谢您的回复。
context.Response.Content
的类型是
System.Net.Http.ObjectContent
。我只需要
System.Collections.Generic.IEnumerable
部分。如何获得它?
ObjectContent
是从
ObjectContent
派生的,所以只需将
context.Response.Content
转换为
ObjectContent
,然后您就可以使用to
Value
属性来转换为您的
IEnumerable
…这对我来说完成了任务。谢谢