Equals dans objet remote: Identity/ServerIdentity cast exception [Résolu]

joebarthib 7 Messages postés lundi 2 juin 2003Date d'inscription 13 octobre 2014 Dernière intervention - 12 févr. 2007 à 16:56 - Dernière réponse : joebarthib 7 Messages postés lundi 2 juin 2003Date d'inscription 13 octobre 2014 Dernière intervention
- 13 févr. 2007 à 14:20
salut,


j'ai une appli client/serveur qui fait du .Net Remoting. J'ai redéfini le Equals d'un objet SCProfileImpl à moi :

publicoverridebool Equals(System.Object obj)
{
SCProfileImpl myobj = obj as SCProfileImpl;
// If parameter is null return false.
if(myobj == null)
returnfalse;
// If both are null, or both are same instance, return true.
if(System.Object.ReferenceEquals(this, myobj))
returntrue;
 
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;
}


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'".

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
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
joebarthib 7 Messages postés lundi 2 juin 2003Date d'inscription 13 octobre 2014 Dernière intervention - 13 févr. 2007 à 14:20
3
Merci
ok j'ai trouvé... mon Array.IndexOf(desProfils, unProfil) comparait "desProfils" obtenus par la nouvelle instance du serveur, alors que "unProfil" datait d'avant que le serveur ne se déconnecte puis se reconnecte ! Effectivement, pas très bon de garder des instances d'objet remote alors que le serveur s'est déconnecté. Donc maintenant je les mets à null lorsque je détecte la déconnexion. En espérant que ça serve à quelqu'un... en tout cas on peut pas dire que l'exception levée ait été très explicite !

Merci joebarthib 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de joebarthib

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.