Asp.net web api 如何从OnActionExecuting操作筛选器返回值

Asp.net web api 如何从OnActionExecuting操作筛选器返回值,asp.net-web-api,asp.net-apicontroller,Asp.net Web Api,Asp.net Apicontroller,这是我的API操作过滤器,我希望能够返回ccaccount obj 调用方法的良好登录结果 知道怎么做吗 谢谢 public class CAPILoginFilter : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext i_actionContext) { CRequestBase request = (CReq

这是我的API操作过滤器,我希望能够返回ccaccount obj

调用方法的良好登录结果

知道怎么做吗

谢谢

   public class CAPILoginFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext i_actionContext)
        {
            CRequestBase request = (CRequestBase)i_actionContext.ActionArguments["i_request"];

            CCAccount account = CAPILogin.AccountIDGetOBJ(request.UserName, request.Password);

            if(account == null)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));
            }
            else
            {
                //return account object to calling method here
            }

        }
    }

无法从OnActionExecuting传回值,但可以在OnActionExecuting事件中设置属性,该属性可由引发该事件的方法读取

在OnActionExecuting事件中,为请求对象创建一个新属性

context.Request.Properties["X"] = variableX;
这将由引发事件的方法读取,如下所示

if (this.Request.Properties.ContainsKey("X"))
{
string x = this.Request.Properties["X"].ToString();

    // Use x here
}

Dave

ApicController中的this.Request引用System.Net.Http.HttpRequestMessage对象,而不是System.Web.HttpRequest对象。httpRequestMessage对控制器和处理程序都可用,并且其属性集合是可写的。它们在调试窗口中看起来很相似,因此很容易混淆,特别是如果您习惯于编写大量非API代码(使用System.Web.HttpRequest对象),请注意HttpRequest对象没有属性集合。