【发布时间】:2017-04-18 01:43:33
【问题描述】:
我正在尝试制作自己的自定义 System.Web.Http.AuthorizeAttribute。一切正常,直到我需要在覆盖的 OnAuthorizationfunction 中运行一些 async 函数。
我找到了OnAuthorizationAsync 方法并使用了它,但是在运行async 方法时仍然遇到问题。我需要确保附加到HttpActionContext 的标头在数据库中。
public override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
{
IEnumerable<string> values;
if (actionContext.Request.Headers.TryGetValues("Authentication", out values))
{
var token = new Token() { TokenString = values.First() };
if (await _tg.ValidateToken(token))
{
return base.OnAuthorizationAsync(actionContext, cancellationToken);
}
}
base.HandleUnauthorizedRequest(actionContext);
}
_tg.ValidateToken(token) 是一个返回布尔值的async 方法。如果我尝试await 并让OnAuthorizationAsync 成为async 方法,那么我显然无法返回任务:
由于 OnAuthorizeAsync 是一个返回“任务”的
async方法,因此返回关键字后面不能跟对象表达式。
有什么办法可以让你从这个混乱中看出来吗?
【问题讨论】:
标签: c# asp.net asp.net-web-api async-await