HttpClient异步Post C#

时间:2014-12-29 03:01:31

标签: c# asynchronous async-await httpclient

我有这行代码:

HttpResponseMessage aResponse = await aClient.PostAsync(theUri, theContent);

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

所以我去搜索并找到了这个链接:Troubleshooting HTTPClient asynchronous POST and reading results

我已经尝试了答案,但我仍然遇到了这个错误。我该怎么办?万分感谢

2 个答案:

答案 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对象。

http://msdn.microsoft.com/en-us/library/hh156513.aspx