HttpClient异步Post C#

use*_*763 2 c# asynchronous httpclient async-await

我有这行代码:

HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent);
Run Code Online (Sandbox Code Playgroud)

但是,我有一个错误:"await"运算符只能在异步方法中使用.考虑使用'async'修饰符标记此方法并将其返回类型更改为'Task'.

所以我去搜索并找到了这个链接:HTTPClient异步POST和读取结果的故障排除

我已经尝试了答案,但我仍然得到了这个错误.我该怎么办?太感谢了

tra*_*r0x 6

您需要修饰包含await调用的方法,async并将其包含在返回类型中Task<TResult>.例如,如果您是从MVC 的Index()操作中调用它,则Controller必须修改:

public ActionResult Index() 
{
    HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent);
    //will give you the error you are getting
}
Run Code Online (Sandbox Code Playgroud)

..它变成了:

public async Task<ActionResult> Index() 
{
    HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent);
    //no error here
}
Run Code Online (Sandbox Code Playgroud)

看一下MSDN 上的async(C#Reference).

还有一种情况是Task在没有返回有意义的值时返回void,主要用于定义需要返回类型的事件处理程序.

对于所有可能的返回类型的async方法,请查看MSDN 上的异步返回类型(C#和Visual Basic).

另外,这些操作需要System.Threading.Tasks在项目中引用.