2015-07-03 45 views
0

返回值,这是我的API行为过滤器,我希望能够以良好的登录结果返回ccaccount OBJ如何从OnActionExecuting行为过滤

调用方法

任何想法如何?

感谢

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 
      } 

     } 
    } 

回答

1

这是不可能传递一个值回从OnActionExecuting但您可以设置在可以由它引起的火灾的方法来读取OnActionExecuting事件属性。

在您的OnActionExecuting事件中,根据请求对象创建一个新属性。

context.Request.Properties["X"] = variableX; 

这将是由导致事件触发这样

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

    // Use x here 
} 

戴夫

+0

this.Request在ApiController refrernces一个System.Net.Http.HttpRequestMessage对象的方法可读,不是System.Web.HttpRequest对象。 httpRequestMessage可用于Controller和Handler,并且其属性集合是可写的。 它们在调试窗口中看起来很相似,所以很容易混淆它们,特别是如果您习惯于编写大量非API代码(使用System.Web.HttpRequest对象)请注意,HttpRequest对象没有属性集合。 –