salut,
j'ai une appli client/serveur qui fait du .Net Remoting. J'ai redéfini le Equals d'un objet SCProfileImpl à moi :
Dans mon client, lorsque je fais un appel à Array.IndexOf(desProfils, unProfil), où ces SCProfileImpl ont préalablement été retournés par le serveur, le IndexOf appelle en interne le SCProfileImpl.Equals, qui me lance une exception "Unable to cast object of type 'System.Runtime.Remoting.Identity' to type 'System.Runtime.Remoting.ServerIdentity'".
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 public override bool Equals(System.Object obj) { SCProfileImpl myobj = obj as SCProfileImpl; // If parameter is null return false. if (myobj == null) return false; // If both are null, or both are same instance, return true. if (System.Object.ReferenceEquals(this, myobj)) return true; bool result = false; try { string imei1 = this.GetIMEI(); string imei2 = myobj.GetIMEI(); // exception is raised here string imsi1 = this.GetIMSI(); string imsi2 = myobj.GetIMSI(); result = (imei1 == imei2) && (imsi1 == imsi2); } catch (Exception e) { (...) } return result; }
Ca fait un moment que je cherche, je tourne en rond :-(
Je précise juste que dans ce SCProfileImpl, j'ai surchargé le InitializeLifetimeService pour qu'il retourne null, et que l'exception ne se produit qu'après un arrêt/relancement du serveur, alors que le client ne s'est pas arrêté de tourner.
Est-ce que quelqu'un a une idée de l'origine de ce problème ?
Merci beaucoup !
Thibaud
Partager