OVH Cloud OVH Cloud

Probleme de transfere d'un objet par webservice

7 réponses
Avatar
Choulant noham
Bonjour

j'ai crée création d'un objet (CLIENT)

public class Client{

private string id;

/// <summary>

/// Gets or sets the id.

/// </summary>

/// <value>The id.</value>

[MappingField("id", true)]

public string Identifiant

{

internal get { return id; }

set { id = value; }

}

}
et je souhaite le transfere par webservice

mais j'ai une erreur :

System.InvalidOperationException: Erreur lors de la g&#233;n&#233;ration du
document XML. ---> System.InvalidOperationException: Le type CLIENT n'était
pas attendu. Utilisez l'attribut XmlInclude ou SoapInclude pour spécifier
les types qui ne sont pas connus statiquement.

je n'arrive pas à resoudre ce probleme

merci

7 réponses

Avatar
Patrick Philippot
Bonjour,

Comme le message d'erreur vous le demande, appliquez l'attribut XmlInclude à
votre type:

[System.Xml.Serialization.XmlInclude(typeof(VotreNamespace.Client))]
public class Client{
...

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


"Choulant noham" wrote in message
news:
Bonjour

j'ai crée création d'un objet (CLIENT)

public class Client{

private string id;

/// <summary>

/// Gets or sets the id.

/// </summary>

/// <value>The id.</value>

[MappingField("id", true)]

public string Identifiant

{

internal get { return id; }

set { id = value; }

}

}
et je souhaite le transfere par webservice

mais j'ai une erreur :

System.InvalidOperationException: Erreur lors de la g&#233;n&#233;ration
du document XML. ---> System.InvalidOperationException: Le type CLIENT
n'était pas attendu. Utilisez l'attribut XmlInclude ou SoapInclude pour
spécifier les types qui ne sont pas connus statiquement.

je n'arrive pas à resoudre ce probleme

merci





Avatar
Choulant noham
Merci de votre réponse

mais ce la ne change rien

voici mon objet au complet

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using RivContactData.Mapping;

using System.Xml.Serialization;

namespace RivContactData.DTO

{

[System.Xml.Serialization.XmlInclude(typeof(RivContactData.DTO.ExpertRivalis))]

[MappingField("contact")]

public class ExpertRivalis

{

private string id;

/// <summary>

/// Gets or sets the id.

/// </summary>

/// <value>The id.</value>

[MappingField("id", true)]

public string Identifiant

{

internal get { return id; }

set { id = value; }

}

private string prenom;

/// <summary>

/// Gets or sets the prenom.

/// </summary>

/// <value>The prenom.</value>

[MappingField("Prenom")]

public string PrenomDeExpert

{

get { return prenom; }

set { prenom = value; }

}

private string nom;

/// <summary>

/// Gets or sets the nom.

/// </summary>

/// <value>The nom.</value>

[MappingField("Nom")]

public string NomDeExpert

{

get { return nom; }

set { nom = value; }

}

private string age;

/// <summary>

/// Gets or sets the age.

/// </summary>

/// <value>The age.</value>

[MappingField("Adresse")]

public string AdressePostal

{

get { return age; }

set { age = value; }

}

private string lsVille;

/// <summary>

/// Gets or sets the age.

/// </summary>

/// <value>The age.</value>

[MappingField("Ville")]

public string Ville

{

get { return lsVille; }

set { lsVille = value; }

}



private string lsPays;

/// <summary>

/// Gets or sets the age.

/// </summary>

/// <value>The age.</value>

[MappingField("pays")]

public string Pays

{

get { return lsPays; }

set { lsPays = value; }

}



private decimal lsCodePostal;

/// <summary>

/// Gets or sets the age.

/// </summary>

/// <value>The age.</value>

[MappingField("cp")]

public decimal CodePostal

{

get { return lsCodePostal; }

set { lsCodePostal = value; }

}

private string lsPhoto;

/// <summary>

/// Gets or sets the age.

/// </summary>

/// <value>The age.</value>

[MappingField("photo")]

public string PhotoExpert

{

get { return lsPhoto; }

set { lsPhoto = value; }

}





private DateTime ldDateCreation;

/// <summary>

/// Gets or sets the age.

/// </summary>

/// <value>The age.</value>

[MappingField("datecreation")]

public DateTime DateDeCreation

{

get { return ldDateCreation; }

set { ldDateCreation = value; }

}

}

}



merci




"Patrick Philippot" a écrit dans le
message de news:
Bonjour,

Comme le message d'erreur vous le demande, appliquez l'attribut XmlInclude
à votre type:

[System.Xml.Serialization.XmlInclude(typeof(VotreNamespace.Client))]
public class Client{
...

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


"Choulant noham" wrote in message
news:
Bonjour

j'ai crée création d'un objet (CLIENT)

public class Client{

private string id;

/// <summary>

/// Gets or sets the id.

/// </summary>

/// <value>The id.</value>

[MappingField("id", true)]

public string Identifiant

{

internal get { return id; }

set { id = value; }

}

}
et je souhaite le transfere par webservice

mais j'ai une erreur :

System.InvalidOperationException: Erreur lors de la g&#233;n&#233;ration
du document XML. ---> System.InvalidOperationException: Le type CLIENT
n'était pas attendu. Utilisez l'attribut XmlInclude ou SoapInclude pour
spécifier les types qui ne sont pas connus statiquement.

je n'arrive pas à resoudre ce probleme

merci









Avatar
Patrick Philippot
> mais cela ne change rien



Ce n'est plus le même type. Toujours la même erreur (sur le nouveau type) ou
une autre erreur?

L'attribut MappingField vient d'où?

Vous pouvez utiliser un constructeur spécial pour le XMlSerializer

XmlSerializer (Type, Type[])

Il vous permet de spécifier à l'avance les types à sérialiser.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Choulant noham
Toujours la meme erreur et toujours sur le meme type

MappingField est une classe d'attribut pour me permettre de remplir mon
objet avec de la réflection.

je ne connais pas l'emplois de XMLSerializer

"Patrick Philippot" a écrit dans le
message de news:
mais cela ne change rien



Ce n'est plus le même type. Toujours la même erreur (sur le nouveau type)
ou une autre erreur?

L'attribut MappingField vient d'où?

Vous pouvez utiliser un constructeur spécial pour le XMlSerializer

XmlSerializer (Type, Type[])

Il vous permet de spécifier à l'avance les types à sérialiser.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr



Avatar
Choulant noham
je viens egalement d'essayer sans mes attribut MappingField mais cela ne
change rien toujours la meme erreur sur le meme type

"Choulant noham" a écrit dans le message de news:
%
Toujours la meme erreur et toujours sur le meme type

MappingField est une classe d'attribut pour me permettre de remplir mon
objet avec de la réflection.

je ne connais pas l'emplois de XMLSerializer

"Patrick Philippot" a écrit dans le
message de news:
mais cela ne change rien



Ce n'est plus le même type. Toujours la même erreur (sur le nouveau type)
ou une autre erreur?

L'attribut MappingField vient d'où?

Vous pouvez utiliser un constructeur spécial pour le XMlSerializer

XmlSerializer (Type, Type[])

Il vous permet de spécifier à l'avance les types à sérialiser.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr







Avatar
Patrick Philippot
Vous avez bien noté que pour sérialiser un objet par valeur vers le client
d'un Web Service il faut que la classe soit sérialisable [serializable]? Je
n'ai pas vu l'attribut dans votre code.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


"Choulant noham" wrote in message
news:uW$
je viens egalement d'essayer sans mes attribut MappingField mais cela ne
change rien toujours la meme erreur sur le meme type

"Choulant noham" a écrit dans le message de news:
%
Toujours la meme erreur et toujours sur le meme type

MappingField est une classe d'attribut pour me permettre de remplir mon
objet avec de la réflection.

je ne connais pas l'emplois de XMLSerializer

"Patrick Philippot" a écrit dans le
message de news:
mais cela ne change rien



Ce n'est plus le même type. Toujours la même erreur (sur le nouveau
type) ou une autre erreur?

L'attribut MappingField vient d'où?

Vous pouvez utiliser un constructeur spécial pour le XMlSerializer

XmlSerializer (Type, Type[])

Il vous permet de spécifier à l'avance les types à sérialiser.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr











Avatar
Choulant noham
Je l'avais oublier mais meme une fois rajouter ca ne marche toujours pas :(

"Patrick Philippot" a écrit dans le
message de news: ue$
Vous avez bien noté que pour sérialiser un objet par valeur vers le client
d'un Web Service il faut que la classe soit sérialisable [serializable]?
Je n'ai pas vu l'attribut dans votre code.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


"Choulant noham" wrote in message
news:uW$
je viens egalement d'essayer sans mes attribut MappingField mais cela
ne change rien toujours la meme erreur sur le meme type

"Choulant noham" a écrit dans le message de news:
%
Toujours la meme erreur et toujours sur le meme type

MappingField est une classe d'attribut pour me permettre de remplir mon
objet avec de la réflection.

je ne connais pas l'emplois de XMLSerializer

"Patrick Philippot" a écrit dans le
message de news:
mais cela ne change rien



Ce n'est plus le même type. Toujours la même erreur (sur le nouveau
type) ou une autre erreur?

L'attribut MappingField vient d'où?

Vous pouvez utiliser un constructeur spécial pour le XMlSerializer

XmlSerializer (Type, Type[])

Il vous permet de spécifier à l'avance les types à sérialiser.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr