Bonjour,
Dans un projet .NET MVC Framework 4.7.2 : j'essaye de récupérer une liste de users depuis une web API :
Voici le code de mon contrôleur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
        {
            var result = apiService.GetAllUsers();
            var result2 = result.Result;
            var result3 = result2.ToList();
            return Json(
                    ConvertHelper.ToCompteSSOGridVM(result3).ToDataSourceResult(request)
            );
        }
Et le code de ma classe qui fait appel à l'API :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public async Task<IEnumerable<CompteSSOGVM>> GetAllUsers()
        {
            List <CompteSSOGVM> users = new List <CompteSSOGVM>();
            try
            {
                var httpClient = GetHttpClient();
                var httpResponse = await httpClient.GetAsync($"/api/Users?pageSize=100");
                var result = httpResponse.Content.ReadAsStringAsync().Result;
                var responseContent = JsonConvert.DeserializeObject<CompteSSOGridViewModel>(result);
                if (httpResponse.IsSuccessStatusCode)
                {
                    users = responseContent.Users;
                }
            }
            catch (Exception ex)
            {
                ...
            }
            return users;
        }
L'exécution de la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var httpResponse = await httpClient.GetAsync($"/api/Users?pageSize=100");
fait immédiatement sortir de la fonction, et on se retrouve sur la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var result2 = result.Result;
avec la variable result dans cet état : Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}"
Mais pas d'exception... la page est bloquée avec un tableau vide dans le navigateur.

Avec Fiddler, je constate que le code retour de l'API est HTTP 200 OK, j'ai bien les résultats attendus.

J'ai l'impression que je ne gère pas comme il faut l'asynchronisme, j'ai essayé de rentre la méthode Read asynchrone mais c'est pire, j'ai une exception systématique en faisant cela.
Help please ?..
Merci d'avance !