Bonjour,
Je galère un peu avec un sevice web en c#, je voudrais que ce service possède deux méthodes, une pour se connecter (authentifier avec un ID), quelques méthodes pour accéder à une base SQL, et une dernière pour se déconnecter (mettre fin à la session).
La gestion de le base SQL ne pose pas de problème, mais l'ouverture et la fermeture de session oui .. Voila ce qui se passe :
- J'ouvre ma session avec la méthode "Connexion", tout fonctionne
- J’exécute ce que j'ai à faire
- Je ferme ma session avec la méthode "Deconnexion"
- J'ouvre une nouvelle session quelques minutes plus tard, mais là lorsque j'appel ma méthode de connexion ("IsInitiating=true") j'ai une exception : "Ce canal ne peut envoyer aucun message supplémentaire car l'opération IsTerminating 'Deconnexion' a été appelée. "
J'ai passé la journée sur internet pour comprendre ce qui ne va pas, mais j'ai rien trouvé .. je me noie dans la documentation ..
Peut être faut t'il fermer le canal lors de la première déconnexion ? Mais je ne sais pas comment faire.
voila le code :
Iservice1.cs (l'interface)
Code:using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.Collections.ObjectModel; namespace Service_WCF { // REMARQUE*: vous pouvez utiliser la commande Renommer du menu Refactoriser pour changer le nom d'interface "IService1" à la fois dans le code et le fichier de configuration. [ServiceContract(SessionMode=SessionMode.Required)] public interface IService1 { [OperationContract(IsInitiating=true, IsTerminating=false)] bool Connexion (string idTechnicien); . . . . . [OperationContract(IsInitiating = false, IsTerminating = true)] void Deconnexion (); }
service1.cs :
Code:using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.Collections.ObjectModel; using System.Data.SqlClient; using System.Data; using System.Diagnostics; // DCF11F26500104E0 namespace Service_WCF { [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode=ConcurrencyMode.Single)] public class Service1 : IService1 { public bool Connexion(string idTechnicien) { ...... } public void Deconnexion() { } }
Un grand merci à ceux qui pourront m'aider
-----