[英]OWIN Authentication:async method lacks 'await' operators
我已經在我的項目中實現了 OWIN 身份驗證。但是當我嘗試構建項目時,它顯示了一些錯誤。
顯示錯誤的方法:
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
//code
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
//code
}
顯示錯誤是
此異步方法缺少“等待”運算符,並且將同步運行。 考慮使用 'await' 運算符來等待非阻塞 API 調用,或使用 'await Task.Run(...)' 在后台線程上執行 CPU 密集型工作。
我該如何解決這個問題?
如果您沒有在函數的實現中使用await
運算符,那么您可以刪除async
修飾符。
但是,一旦您刪除它,編譯器將期望您為Task
提供返回值。 您顯然可以根據自己的選擇創建一個Task
,但在這種情況下,您可能只想返回以下內容( 此處討論):
public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
return Task.FromResult<object>(null);
}
async
不是簽名的一部分。 僅僅因為您覆蓋async
方法並不意味着您必須將覆蓋標記為async
。
因此,如果您的代碼中沒有任何await
,只需刪除async
標記。
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
//code
}
public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
//code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.