Asp.net mvc 4 如何在MVC4应用程序中成功使用HttpClient访问iTunes搜索服务

Asp.net mvc 4 如何在MVC4应用程序中成功使用HttpClient访问iTunes搜索服务,asp.net-mvc-4,async-await,dotnet-httpclient,Asp.net Mvc 4,Async Await,Dotnet Httpclient,我正在编写一个MVC4应用程序,在控制器中,我需要能够调用web服务来访问iTunes搜索服务,以便获得DVD的封面图片 我有以下非常简单的代码 public static string GetAlbumArt(Movie movie) { Task<string> lookupTask = LookupAlbumArt(movie.Title, movie.Year); lookupTask.Wait(5000); if (lookupTask.IsCompleted)

我正在编写一个MVC4应用程序,在控制器中,我需要能够调用web服务来访问iTunes搜索服务,以便获得DVD的封面图片

我有以下非常简单的代码

public static string GetAlbumArt(Movie movie) {
  Task<string> lookupTask = LookupAlbumArt(movie.Title, movie.Year);
  lookupTask.Wait(5000);
  if (lookupTask.IsCompleted)
  {
    return lookupTask.Result;
  }
  else
  {
    return Timeout;
  }
}

private static async Task<string> LookupAlbumArt(string title, int year)
{
  using (var client = new HttpClient())
  {                                
    string response= await client.GetStringAsync(
      "http://itunes.apple.com/search?term=hoosiers&media=movie"
    );                
    return response;                
  }
}
当我运行此命令并在GetAlbumArt中的返回超时行以及LookupAlbumArt中的返回响应行设置断点时,首先命中超时断点,然后命中LookupAlbumArt返回语句,正确的内容在响应变量中

如果我从lookupTask.Wait5000中删除timeout参数,wait-GetStringAsync调用将永远不会返回,页面也永远不会加载


这感觉像是一项非常简单的任务,我很难说我做错了什么。

看起来可能是同一个问题。从那里链接的问题有更多的细节。谢谢马克,当我试图解决这个问题时,不知怎么的我错过了。我不是有意要贴一份副本的。我希望Google上最热门的.NET HttpClient示例考虑到这一点!