Voilà le topo,
J’ai une page ASP.Net qui doit communiquer avec un service windows. Les deux sont codés en C# avec framework .net 2.0 .
La communication se fait par des sockets, j’ai une classe communes aux deux applications qui stocke les deux données que j’ai besoin de transferer :
[code][Serializable()]
public class my_data
{
public string id_produit;
public string id_oeuvre;
public my_data(string id_produit, string id_oeuvre)
{
this.id_oeuvre = id_oeuvre;
this.id_produit = id_produit;
}
}[/code]
La serialisation se passe bien, je serialise ça dans un NetworkStream que je flush() et j’ai bien une reception au niveau du service.
[code]public void envoyer(string serveur, int port)
{
//envoi d’une serialization binaire de l’instance
my_data d = new my_data(id_produit, id_oeuvre);
BinaryFormatter b = new BinaryFormatter();
TcpClient envoi = new TcpClient(serveur, port);
NetworkStream ns = envoi.GetStream();
b.Serialize(ns, d);
ns.Flush();
}[/code]
Le problème c’est la deserialization à la reception.
BinaryFormatter bf = new BinaryFormatter();
NetworkStream ns = client.GetStream();
my_data requete = new my_data("","");
if (ns.DataAvailable)
{
requete = (my_data)bf.Deserialize(ns);
}
La dernière ligne lève une SerializationException : “Impossible de trouver l’assembly ‘App_Code.rrgsvpqf, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’”. L’aide MSDN sur cette exception m’a énormement aidé : “The exception that is thrown if an error occurs during serialization or deserialization.” Google ne m’a pas trop aidé non plus.
Quelqu’un a-t-il déjà eu à faire à ce genre de cas ? Est-ce que j’ai loupé quelque chose quelque part ?