我有这行代码:
HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent);
但是,我有一个错误:“await”运算符只能在异步方法中使用。考虑使用'async'修饰符标记此方法并将其返回类型更改为'Task'。
所以我去搜索并找到了这个链接:Troubleshooting HTTPClient asynchronous POST and reading results
我已经尝试了答案,但我仍然遇到了这个错误。我该怎么办?万分感谢
答案 0 :(得分:6)
您需要使用await
修饰包含async
调用的方法,并将其包含在Task<TResult>
中的返回类型中。例如,如果您是在MVC中Index()
的{{1}}操作中调用它,则必须修改:
Controller
..所以它变成了:
public ActionResult Index()
{
HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent);
//will give you the error you are getting
}
在MSDN上查看async (C# Reference)。
还有返回public async Task<ActionResult> Index()
{
HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent);
//no error here
}
时没有返回有意义值的情况和Task
,主要用于定义需要返回类型的事件处理程序。
对于void
方法的所有可能返回类型,请查看MSDN上的Async Return Types (C# and Visual Basic)。
另外,这些操作需要在项目中引用async
。
答案 1 :(得分:2)
确保包含此行代码的方法标记为异步并返回Task对象。