HttpClientを使用してASP MVCでInstagram APIクライアントを作成していますが、取得要求を出そうとしていますが、例外をスローしたり応答せずに失敗し、私のタイムアウト。ここに私のコードは次のとおりです。ここで私は、私はホームコントローラに私のサービスを呼び出す方法を追加ASP HttpClient GetAsyncが応答していないか、タイムアウトしていません
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;
}
}
EDIT
、私はまだテストタスク
public class HomeController : Controller
{
private InstagramService IGService = new InstagramService();
public ActionResult About()
{
var apiCall = IGService.GetInstagramUser();
var model = apiCall.Result;
return View(model);
}
}
Iを非同期するようにコントローラを変更しますPostmanがAPI呼び出しを試みる際にテストしました。実際にはうまくいきました。そこで、どこでエラーを見つけられないのですか?
コードはどのように呼び出されていますか?コールスタックの上にブロッキングコールが上がっていないことを確認してください。 – Nkosi
@Nkosiここでは、メソッドをキャリブレーションする方法の断片を追加しました –
Stephen Clearyの答えをチェックしてください。私は 'apiCall.Result'をブロックしてデッドロックを引き起こす可能性があると考えていました。非同期/待機を使用するように変換する – Nkosi