You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用await遇报错:'await仅能在async方法内使用',但操作已标记async

解决“‘await’运算符只能在async方法内使用”的错误

这个问题其实很直观——你写的TestMethod1方法没有标记为async,但你在方法内部调用await client.ApiRequestTokenPostWithHttpMessagesAsync(tokenRequest)时用了await关键字,这就违反了C#的规则:任何使用await的方法,必须用async修饰符来声明。

你提到觉得相关操作已经标记为async,应该是指ApiRequestTokenPostWithHttpMessagesAsync这个方法本身是async的,但别忘了:调用async方法并使用await的那个方法(也就是你的TestMethod1)也得是async的才行。

把你的方法改成下面这样就能解决问题了:

public async Task TestMethod1() 
{ 
    SvcRestClient client = new SvcRestClient(new Uri("http://localhost:44395"), new AnonymousCredential()); 
    var tokenRequest = new TokenRequest { Username = "myusername", Password = "p@ssword1" }; 
    tokenRequest.Validate(); // passes 
    var tokenResponse = await client.ApiRequestTokenPostWithHttpMessagesAsync(tokenRequest); 
}

如果这是一个单元测试方法(比如用xUnit、NUnit这类框架),也可以用async void,不过更推荐用async Task——async void在测试框架里可能会引发异步执行的潜在问题。

另外你提供的截图里,错误提示也精准指向了await关键字,这也进一步确认了问题出在方法本身没有标记async上。

内容的提问来源于stack exchange,提问作者Kirsten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:35:19