Ho l'app. Qui creo il servizio client da WSDL. Oggi alcune funzioni funzionano normalmente. Ma alcuni hanno torto.Perché i campi con campo aggiuntivo "Specificato" sono sempre nulli?
È una parte da WSDL
<xs:complexType name="TStartInfoCalcZoneViewForArea">
<xs:sequence>
<xs:element minOccurs="0" name="ID" type="xs:int"/>
<xs:element minOccurs="0" name="startFreq" type="xs:double"/>
<xs:element minOccurs="0" name="endFreq" type="xs:double"/>
<xs:element minOccurs="0" name="startTime" type="xs:string"/>
Si tratta di una parte in C#
public partial class TStartInfoCalcZoneViewForArea
{
private int idField;
private bool idFieldSpecified;
private double startFreqField;
private bool startFreqFieldSpecified;
private double endFreqField;
private bool endFreqFieldSpecified;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public int ID
{
get
{
return this.idField;
}
set
{
this.idField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool IDSpecified
{
get
{
return this.idFieldSpecified;
}
set
{
this.idFieldSpecified = value;
}
}
ho impostato il valore di questi campi. Per esempio
.ID = 100;
.IDSpecified = true; // I set nothing, false. But result is same.
Il problema è che tutti questi campi (ID, endFreq, startFreq) sono nulli in assistente gsoap.
Qual è il motivo di questo problema? Come posso ripararlo?
Aggiornamento - la ragione e la soluzione
Il problema era: non ho il codice sorgente del "server gsoap". Ma sull'accordo nella nostra azienda usiamo (possiamo guardare) il log da questa applicazione. Questo registro non era corretto (prima di tutto non ci sono messaggi di registro in questa situazione, quindi questi messaggi non erano corretti. Dopo aver risolto il problema è stato risolto).
Inoltre ci sono molte classi e strutture con campo "doppio". Quindi, in alcune classi ho impostato "... Specified = true;". In un altro caso non ho impostato "... Specified = true;". Dopo che il registro è stato corretto, vedo il problema.
Quindi ho bisogno di impostare "... Specified = true;" in tutte le classi. Non so se questa soluzione sia corretta, perché
1) Chiedo a un altro programmatore nella nostra azienda, ma non sanno wcf normale.
2) impostare "... Specificato = vero;", ma nel registro vedo lo stesso messaggio.
Grazie. Il mio problema è che imposto tutti i valori. ID = 100 startFreq = 1500 endFreq = 2500; Ma nell'applicazione gsoap questi campi sono nulli (altri campi sono buoni) – novicegis
@novicegis: e ** hai impostato ** il loro campo di accompagnamento '.... specificato' a ** VERO ** ???? Se non imposti questi campi su ** TRUE **, allora i tuoi valori ** NON saranno ** serializzati nel messaggio! –
Sì, ho impostato true – novicegis