Bonjour à tous,
Débutant dans les services Web, je me retrouve confronté à plusieurs problèmesliés aux références Web.
je vais vous expliquer ici ma démarche pour effectuer la création d'un service Web simple et la consommation de celui-ci en local.
Tout d'abord je crée le fichier operations.asmx suivant :
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 <%@ webservice Language=C# class=PetitExemple.Exemple %> using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; namespace PetitExemple { public class Exemple : System.Web.Services.WebService { [WebMethod] /*Cet attribut spécifie que la méthode est utilisable par une application cliente d'un service Web*/ public int Additionne(int a, int b) { return a + b; } } }
Ensuite je me dit que j'essaie de prévisualiser ce code dans le navigateur web via http://localhost/st/operations/
avec le répertoire "st" mis comme répertoire virtuel.
J'accède alors à la page de test du service Web avec affichage du lien avec le nom de la méthode.
a partir de la, les incohérence commencent dans mon esprit.
Je m explique :
Sans citer les sources car je ne m'en souviens plus, j'ai lu que soit je pouvais créer un assembly dll via wsdl.exe et csc.exe.
Opérations que j'ai réalisées, je crée un nouveau projet avec visual studio 2005 Express Edition.
Je crée un projet vide auquel j'ajoute la référence (non web) de la dll fraichement créée (ici petitExemple.dll)![]()
J'utilise cette référence via le code suivant :
Après cela, je compile et exécute et... ca fonctionne comme espéré.
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 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; public class Test { public static void Main(String[] Args) { Exemple add = new Exemple(); Console.WriteLine("" + add.Additionne(5, 4)); Console.ReadLine(); } }
Donc si je résume pour avoir compris, j'ai utilisé une dll qui permet d'utiliser le service web localisé sur ma machine?
Dans le deuxieme cas, je veux utiliser une référence web, et la ca se complique...
D'après ce que j'ai lu, quand on ajoute une référence Web, VS.NET s'occupe de compiler l'assembly , c est bien cela?
Donc j'ajoute une référence web contenant le fichier operations.asmx.
VS.Net me propose le nom de référence "localhost", ok! (peut importe le nom ajoute, le problème apparaît toujours)
j'ai donc ma référence localhost.
je l'utilise de la même manière que la dll via le code suivant :
Ce code est identique au précédent.
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 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; public class Test { public static void Main(String[] Args) { Exemple add = new Exemple(); Console.WriteLine("" + add.Additionne(5, 4)); Console.ReadLine(); } }
J'essaie de compiler et j'obtiens l'erreur suivante :
Erreur 1 Le type ou le nom d'espace de noms 'Exemple' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
Alors quel est le probleme ?
J'essaie alors avec petitExemple.exemple à la place de exemple : résultat :
Erreur 1 Le type ou le nom d'espace de noms 'petitExemple' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
Dernier recours , j'essaie en remplaçant petitExemple par localhost : résultat :
Erreur 1 Le type ou le nom d'espace de noms 'localhost' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
Sur ce je ne comprend vraiment pas pourquoi cela fonctionne avec une référence assembly que je crée et que cela ne fonctionne pas avec une référence Web?
Pourriez-vous m'expliquer car je n'ai pas bien compris...![]()
D'avance Merci pour votre Patience![]()
Partager