嘗試通過WCF(開發)傳遞集合(整數,字符串,對象列表無關緊要)集合在Visual Studio 2012中),集合中的項目不存在。沒有錯誤,複雜對象本身的集合屬性不爲null,只有集合的內容缺失。Delphi無法正確序列化WCF服務集合(列表/整數,字符串,對象等數組)正確
服務接口包含許多與來自不同衛星程序集數據的合同的方法:
[OperationContract]
EmailPreferencesUpdateResponse UpdateEmailPreferences(EmailPreferencesUpdateRequest request);
public class EmailPreferencesUpdateRequest
{
public int EmailId { get; set; }
public string AccountNumber { get; set; }
public int EmailFormat { get; set; }
public string EmailAddress { get; set; }
public int[] EmailPreferences { get; set; }
}
使用招,Delphi的生成的SOAP請求比由WCF測試客戶端生成的消息稍有不同:
我在2010年的Delphi測試此問題,XE2,並且與任何方法WCF服務可容易地再現其中一個複雜的數據傳送對象參數包含一個集合(數組,List,IEnumerable,無所謂)。
是否有'絕招'使Delphi的SOAP名稱空間正確?有沒有一個德爾福WSDL導入選項(使用WSDL導入用戶界面)缺失(或我需要取消檢查):
有什麼我可以做WCF服務本身不會破壞現有合同?
我已經確認端點是basicHttpBinding,嘗試使用XmlSerializerFormat(下面的圖像,它適用於Delphi,遇到其他問題),但打破已有的現有的.Net客戶端/實現。
[ServiceContract(Name = "Delphi", Namespace = "SomeRandomNamespace")]
[XmlSerializerFormat(Style = OperationFormatStyle.Document, Use = OperationFormatUse.Literal)]
public interface IDelphiCompatibleOrderTakingService
的代碼,請不要粘貼截圖解決問題。粘貼代碼。 –
我放棄了將Delphi直接連接到WCF。我總是最終在.NET中製作一箇中間DLL,通過COM公開所需的功能。 – whosrdaddy
@DavidHeffernan:謝謝你的回覆。代碼本身沒有/不像問題行爲那麼重要。我不想深入瞭解如何正確命名命名空間的具體語法和風扇火焰。 – KevinRF