gpt4 book ai didi

c# - ASP HttpClient GetAsync 没有响应,也没有超时

转载 作者:太空狗 更新时间:2023-10-30 00:38:24 24 4
gpt4 key购买 nike

我正在使用 HttpClient 在 ASP MVC 上创建一个 Instagram API 客户端,我试图发出一个获取请求,但它失败了,没有抛出异常或响应,也没有响应我的超时。这是我的代码:

 public class InstagramService
{
private HttpClient Client = new HttpClient {
BaseAddress = new Uri("https://api.instagram.com/v1/"),
Timeout = TimeSpan.FromMilliseconds(500)
};
public async Task<InstagramUser> GetInstagramUser(long? userId = null)
{
InstagramUser User = null;
string Parameter = (userId == null) ? "self" : userId.ToString();
try {
var response = await Client.GetAsync("users/" + Parameter + "/" + GetAccessToken());
if (response.IsSuccessStatusCode)
{
User = await response.Content.ReadAsAsync<InstagramUser>();
}
}catch(Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.InnerException.Message);
}
return User;
}

private string GetAccessToken()
{
return "?access_token=" + DB.config_det_sys.Single(i => i.codigo == "ACCESS_TOKEN_INSTAGRAM" && i.estado == true).Valor;
}

}

编辑

这里我添加了我如何在 Home Controller 上调用我的服务,我仍然会测试将 Controller 更改为异步任务

public class HomeController : Controller
{
private InstagramService IGService = new InstagramService();
public ActionResult About()
{
var apiCall = IGService.GetInstagramUser();
var model = apiCall.Result;
return View(model);
}
}

我在尝试进行 API 调用的 Postman 上进行了测试,它确实有效,那么我在哪里没有发现错误?

最佳答案

你的问题在这里:

var model = apiCall.Result;

正如我在我的博客中描述的那样,you shouldn't block on asynchronous code .它可能会导致死锁。

代替Result,使用await:

var model = await apiCall;

关于c# - ASP HttpClient GetAsync 没有响应,也没有超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41273126/

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