私はアプリを持っています。ここでは、WSDL からクライアント サービスを生成します。現在、一部の機能は正常に動作します。しかし、いくつかは間違っています。
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"/>
それは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;
}
}
このフィールドに値を設定します。例えば
.ID = 100;
.IDSpecified = true; // I set nothing, false. But result is same.
問題は、このすべてのフィールド (ID、endFreq、startFreq) が gsoap サーバーで null であることです。
この問題の原因は何ですか? どうすれば修正できますか?
更新 - 理由と解決策
問題は、「gsoap サーバー」のソース コードを持っていないことです。ただし、当社での契約上、本アプリからのログを利用(視聴可能)しています。このログは正しくありません (まず、この状況ではログ メッセージがありません。次に、このメッセージが正しくありませんでした。修正後、問題は解決されました)。
また、「double」フィールドを持つ多くのクラスと構造があります。そのため、一部のクラスのインスタンスでは、「...Specified = true;」を設定しました。別のケースでは、「...Specified = true;」を設定しません。ログが修正された後、問題が表示されます。
したがって、「...Specified = true;」を設定する必要があります。すべてのクラスで。この解決策が正しいかどうかはわかりません。
1) 社内の別のプログラマーに聞いてみたが、彼らは wcf normal を知らない。
2) "...Specified = true;" を設定しますが、ログに同じメッセージが表示されます。