gpt4 book ai didi

c# - 异步等待根本不返回(.Net 4.5)

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:45 25 4
gpt4 key购买 nike

我在 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;
}

}

在控制台应用程序中尝试了这个,即使在这个应用程序中,我一调用第一个 await 就退出了。

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;

最佳答案

请确保您使用的是 .NET 4.5,并且在 app.config 中将 httpRuntime.targetFramework 设置为 4.5

关于c# - 异步等待根本不返回(.Net 4.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19095669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com