2012-03-20 5 views
5

Tôi gặp lỗi khi cố gắng gửi tập hợp dữ liệu qua dịch vụ của chúng tôi. Tuy nhiên, nếu tôi chỉ thêm một mục vào bộ sưu tập thì nó sẽ hoạt động. Ngay sau khi tôi thêm nhiều hơn thì một mục tôi nhận được lỗi sau đâyNgoại lệ tuần tự hóa WCF - NetDataContractSerializer

Việc sử dụng loại 'SmartTrade.Shared.Common.PaymentTerm' làm bộ sưu tập chỉ nhận không được hỗ trợ với NetDataContractSerializer. Xem xét việc đánh dấu loại với thuộc tính CollectionDataContractAttribute hoặc thuộc tính SerializableAttribute hoặc thêm một bộ setter vào thuộc tính.

Vì vậy, điều quan trọng cần lưu ý ở đây là tôi có thể gửi bộ sưu tập (IList <>) với một mục duy nhất. Tôi đã tăng MaxReceivedMessageSize và MaxArrayLength cho những gì tôi nghĩ là hợp lý hơn.

Ai đó có thể giúp tôi ở đây

Trả lời

3

Cuối cùng tôi đã làm việc đó. Có một thuộc tính trong một lớp cơ sở chỉ có thuộc tính getter và không có thuộc tính setter. Vì vậy, tôi phải thêm một thuộc tính setter

+2

Ông có thể giải thích tại sao setter khách sạn này là cần thiết? –

3

Một cách thay thế để thêm một setter vô nghĩa sẽ là đánh dấu thuộc tính bị bỏ qua bởi serialization.

này có thể được thực hiện bằng cách trang trí tài sản của bạn với System.Runtime.Serialization.IgnoreDataMemberAttribute

Ví dụ:

public class Whatever 
{ 
    [IgnoreDataMember] // this won't be serialized now 
    public List<string> Things 
    { 
     get { return _things; } 
    } 
}