Asp.net web api 如何从OnActionExecuting操作筛选器返回值
这是我的API操作过滤器,我希望能够返回ccaccount obj 调用方法的良好登录结果 知道怎么做吗 谢谢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
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
}
DaveApicController中的this.Request引用System.Net.Http.HttpRequestMessage对象,而不是System.Web.HttpRequest对象。httpRequestMessage对控制器和处理程序都可用,并且其属性集合是可写的。它们在调试窗口中看起来很相似,因此很容易混淆,特别是如果您习惯于编写大量非API代码(使用System.Web.HttpRequest对象),请注意HttpRequest对象没有属性集合。