web-dev-qa-db-ja.com

Web APIActionFilterは戻り値を変更します

ActionFilterのOnActionExecutedメソッドを介していくつかのAPIエンドポイントの戻り値を取得する必要があるWebAPIアプリケーションがあります

カスタム属性を使用して、変更する必要のあるデータがあるエンドポイントを識別していますが、HttpActionExecutedContext内から実際の結果オブジェクトを見つけることができないようです。

助けてくれてありがとう!

23
joe_coolish

戻り値は、Response.Contentプロパティを介して取得できます。アクションがオブジェクトを返した場合は、それをObjectContentにキャストして、そこから戻り値の実際のインスタンスを取得できます。

public class MyFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(HttpActionExecutedContext context)
    {
        var objectContent = context.Response.Content as ObjectContent;
        if (objectContent != null)
        {
            var type = objectContent.ObjectType; //type of the returned object
            var value = objectContent.Value; //holding the returned value
        }
    }
}
44
nemesv