Bonjour,
J'ai crée une projet Asp.MVC de classe structuré ainsi (voir capture ecran)
La classe AuteurController contient une methode AfficherAuteurs, qui, pour s'executer fait appel à un une instance serviceAuteur de la classe ServiceAuteur, d'une application console ConsommerAPI
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 using ConsommerAPI; using e_Bibliotheque.Models; using Entite; using System; using System.Threading.Tasks; using System.Web.Mvc; namespace e_Bibliotheque.Controllers { [RoutePrefix("api/Auteur")] public class AuteurController : Controller { [Route("")] // GET: Auteur [HttpGet] public async Task<ActionResult>AfficherAuteurs() { VM_ListAuteurs modelAuteurs = new VM_ListAuteurs(); modelAuteurs.ListAuteurs = null; try { ServiceAuteur serviceAuteur = new ServiceAuteur(); //les modèles récupèrent les resultats recupérés en BDD + la vue les affiche modelAuteurs.ListAuteurs = await serviceAuteur.recupLesAuteursAsync(); return View(modelAuteurs); } catch(Exception ex) { Console.WriteLine("une erreur s'est produite" + ex.Message); return View(modelAuteurs); } }Quand je lance le serveur IIS, j'obtiens l'erreur en capture ecran.
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 using Entite; using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; using System.Net.Http.Formatting; namespace ConsommerAPI { public class ServiceAuteur { public async Task<IEnumerable<Auteur>> recupLesAuteursAsync() { HttpClient client = new HttpClient(); client.BaseAddress = new Uri("https://localhost:59281/api/"); var urlAPI = client.BaseAddress; var objetReponse = await client.GetAsync($"{urlAPI}Auteur"); if (objetReponse.StatusCode == System.Net.HttpStatusCode.OK) { var objetContenu = objetReponse.Content; var stringContenu = await objetContenu.ReadAsStringAsync(); var listAuteur = JsonConvert.DeserializeObject<IEnumerable<Auteur>>(stringContenu); return listAuteur; } else if (objetReponse.StatusCode == System.Net.HttpStatusCode.NotFound) { return null; } else { var objetContenu = objetReponse.Content; var stringContenu = await objetContenu.ReadAsStringAsync(); throw new Exception("Un problème avec API : status = {objetReponse.StatusCode}, contenu : {stringContenu}"); } }
Est ce que cela a un lien avec la route qui est [RoutePrefix("api/Auteur")] alors que l'on voit dans l'URL uniquement http://localhost:59281/Auteur/AfficherAuteurs sans api/ devant Auteur.
si j'ai bien compris ,"api/Auteur" est le nom du controller .
Or ce n'est pas celui qui apparaît au niveau d el'URL.
Merci beaucoup de votre aide sur ce sujet .
Bien cordialement.
new_wave
-
Partager