Hung 返回 Follows 来自 Relationships 端点的数据

Hung returning Follows data from Relationships endpoint

我正在尝试 return 来自 Instagram API 的关注用户列表。我在使用 .NET 的 InstaSharp 包装器的沙盒帐户上。

用户通过身份验证后正在调用操作方法。

public ActionResult Following()
{
    var oAuthResponse = Session["InstaSharp.AuthInfo"] as OAuthResponse;

    if (oAuthResponse == null)
    {
        return RedirectToAction("Login");
    }

    var info = new InstaSharp.Endpoints.Relationships(config_, oAuthResponse);

    var following = info.Follows("10").Result;

    return View(following.Data);
}

尝试使方法一直异步,而不是进行阻塞调用 .Result,这有导致死锁的风险

public async Task<ActionResult> Following() {
    var oAuthResponse = Session["InstaSharp.AuthInfo"] as OAuthResponse;

    if (oAuthResponse == null) {
        return RedirectToAction("Login");
    }

    var info = new InstaSharp.Endpoints.Relationships(config_, oAuthResponse);

    var following = await info.Follows("10");

    return View(following.Data);
}

取决于 info.Follows 的实施方式。

查看 Github repo,API 在内部调用这样定义的方法

public static async Task<T> ExecuteAsync<T>(this HttpClient client, HttpRequestMessage request)

这看起来像确凿的证据,因为在此任务上调用 .Result 更高层的调用堆栈会导致您遇到死锁。

引用Async/Await - Best Practices in Asynchronous Programming