我在ASP.NET MVC应用程序中有以下示例代码。 我根本无法获取数据。换句话说即使我等待完成任务,也没有任何事情发生,控制永远不会返回到索引操作。 我错过了什么?
public class HomeController : Controller
{
//
// GET: /Home/
public async Task<ActionResult> Index()
{
Task<string> getContentsTask = GetContentsAsync();
string contents = await getContentsTask;
return Content("ssss");
}
async Task<string> GetContentsAsync()
{
int sample = 0;
HttpClient client = new HttpClient();
Task<string> contents = client.GetStringAsync("http://www.msdn.com");
string data = await contents;
return data;
}
}
在一个控制台应用程序中尝试了这个,甚至在我调用第一个等待时,应用程序就退出了。
class Program
{
static void Main(string[] args)
{
GetContents();
}
public static async void GetContents()
{
Task<string> newTask = GetContentsAsync();
string contents = await newTask;
Console.WriteLine(contents);
Console.ReadLine();
}
public static async Task<string> GetContentsAsync()
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://www.msdn.com");
string content = await getStringTask;
return content;
}
}
当我给出Thread.Sleep(8000);然后这工作正常。调用正确返回。
Task<string> getContentsTask = GetContentsAsync();
Thread.Sleep(10000);
string contents = await getContentsTask;
答案 0 :(得分:0)
请确保您使用的是.NET 4.5,并且httpRuntime.targetFramework
中4.5
设置为app.config
。