2014-11-22 118 views
1

如何訪問ActionExecutingContext中的Request.Properties如何訪問ActionExecutingContext中的Request.Properties

public class UserFilter : ActionFilterAttribute 
{ 
    public void OnActionExecuting(ActionExecutingContext actionContext) 
    { 
     // Properties is not part of the Request here, so I can't access it 
     // Here Request is of type System.Web.HttpRequestBase 
     actionContext.HttpContext.Request.Properties.Add("UserData", new UserData()); 
    } 
} 

我能做到這一點在ApiController

public class HomeController : ApiController 
{ 
    public HomeController() 
    { 
     // Here I can do it (here Request is of type 
     // System.Net.Http.HttpRequestMessage 
     this.Request.Properties.Add("UserData", new UserData()); 
    } 
} 

回答

1

對於ApiController你需要使用另一個ActionFilterAttribute(位於System.Web.Http.Controllers命名空間):

using System.Web.Http.Controllers; 
    using System.Web.Http.Filters; 

    public class UserFilter : ActionFilterAttribute 
    { 
     public override void OnActionExecuting(HttpActionContext actionContext) 
     { 
        // Properties is part of the Request here, you can access it 
        // actionContext.Request.Properties 
     } 
    }