2011-09-22 58 views
0

我有幾個方法的WCF:GetAccount,UpdateAccount,DeleteAccont和ListAccount,前三項工作很好,但ListAccount沒有。 我得到一個錯誤:從WCF服務接收數據時出錯

Error

的ListAccount返回帳戶的列表:

[DataContract] 
public class Account 
{ 
    private int id; 
    private String name; 
    private AccountType accountType; 
    private Account upperAccount; 
    private Dictionary<Business, double> porc; 

    public Account() 
    { 
     porc = new Dictionary<Business, double>(); 
    } 

    [DataMember] 
    public int Id 
    { 
     get { return id; } 
     set { id = value; } 
    } 

    [DataMember] 
    public String Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 

    [DataMember] 
    public AccountType AccountType 
    { 
     get { return accountType; } 
     set { accountType = value; } 
    } 

    [DataMember] 
    public Account UpperAccount 
    { 
     get { return upperAccount; } 
     set { upperAccount = value; } 
    } 

    [DataMember] 
    public Dictionary<Business, double> Porc 
    { 
     get { return porc; } 
     set { porc = value; } 
    } 

    public override string ToString() 
    { 
     return name; 
    } 
} 


[DataContract] 
public enum AccountType : byte 
{ 
    [EnumMember] 
    [Description("Account Type One")] 
    One = 0, 

    [EnumMember] 
    [Description("Account Type Two")] 
    Two = 1, 
} 

[DataContract] 
public enum Business : byte 
{ 
    [EnumMember] 
    [Description("Business One")] 
    BusinessOne = 0, 

    [EnumMember] 
    [Description("Business Two")] 
    BusinessTwo = 1, 
} 

一個觀察,該列表包含45項。

任何幫助將受到好評。謝謝

+1

OperationContract對於ListAccount來說是什麼樣的? –

回答

2

您很可能在WCF上找到了其中一個配額 - 確定在服務器上找到enable tracing的方式,並查看將包含異常情況的跟蹤信息,說明服務器斷開客戶端的原因。如果沒有這些信息,我們可以做一些猜測:也許你正在使用MaxItemsInObjectGraph配額(可以使用端點或服務行爲增加;也許圖形有一個週期,你需要啓用preserveObjectReferences來處理它,等等,但只有跟蹤我們才能知道肯定

+0

謝謝,啓用跟蹤我發現了錯誤,問題是沒有定義枚舉。 :「System.ServiceModel.CommunicationException:嘗試序列化參數GetListAccount時發生錯誤」。 – Gabriel

0

你的ListAccount方法拋出任何錯誤?嘗試使用列表的.ToArray方法並返回一個Account [],而不是返回一個列表。我假設你的GetAccount方法返回一個Account對象,這意味着它是可序列化的。