2016-12-03 11 views
0

私は自分のカスタムを作成しようとしていますSystem.Web.Http.AuthorizeAttributeasync関数をオーバーライドされたOnAuthorization関数の内部で実行する必要があるまで、すべてが機能していました。カスタムAuthorizeAttribute OnAuthorizationAsync関数

私はOnAuthorizationAsyncメソッドを見つけましたが、それでもまだasyncメソッドを実行している問題があります。 HttpActionContextに添付されたヘッダーがdbにあることを確認する必要があります。

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にそれを試してみて、OnAuthorizationAsyncasync方法を作る場合、私はその後、明らかにタスクを返すカント:

OnAuthorizeAsyncは、「タスク」を返すasync方法であるので、returnキーワードは、オブジェクト式に続いてはいけません。

この混乱からわかる方法はありますか?

答えて

1

awaitを使用しているため、async修飾子をメソッドの宣言に追加する必要があります。次に、あなたが持っているreturnawaitに変更します。コンパイラは残りの処理を行います。つまりTaskが返されます。

関連する問題