看似成功地在c#控制檯應用程序中成功地使用了Web服務,對返回對象的檢查顯示屬性全爲空!結果中的.NET webservice客戶端null屬性
後答案一番搜索,我跟蹤這個問題倒在SOAP XML命名空間的問題 - 使用招,我稍微修改SOAP響應看起來像這樣:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<MyResponse xmlns="http://foo.com">
<FIRST_NM xmlns="">Michael</FIRST_NM>
</MyResponse>
</soapenv:Body>
</soapenv:Envelope>
唯一的一部分,我添加是:
... FIRST_NM xmlns =「」>邁克爾......(粗體部分)使用提琴手。
有一次,我在調試會話期間做了一箇中間人 - 瞧! 「邁克爾」的FIRST_NM值首次顯示在我的客戶端應用程序中。我決定嘗試這個,因爲我注意到從我的客戶端發出的請求具有這樣的屬性,而響應沒有。
OK,診斷完成。我正在轉向使其工作的一步。假設我有過的事情在服務器端沒有控制,我試圖開拓Reference.cs文件,並做一些改變,比如這個不斷變化的:
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=3)]
public string FIRST_NM {
get {
return this.fIRST_NMField;
}
set {
this.fIRST_NMField = value;
this.RaisePropertyChanged("FIRST_NM");
}
}
這樣:
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Namespace="http://foo.com", Order=3)]
public string FIRST_NM {
...
我加Namespace =「http://foo.com」,添加到XmlElementAttribute。我的想法是,沒有xmlns =「」那個名字空間「http://foo.com」從父母「MyResponse」標記繼承,我會得到一個匹配。
然而,這並沒有奏效。任何方向你都可以指向我將不勝感激。