2011-06-06 25 views
7

I gone through this MSDN link but could not get enough details<readerQuotas> trong WCF Binding là gì?

Bất kỳ ai cũng có thể giải thích cho tôi về trường hợp và tại sao tôi cần đặt giá trị này.

Tôi đi qua các thiết lập khi tôi đã cố gắng để gửi một đối tượng hợp đồng dữ liệu cho phương pháp dịch vụ và đã nhận được ngoại lệ Máy chủ từ xa trả về lỗi: Không tìm thấy.,

Hợp đồng dữ liệu của tôi có danh sách <> thuộc tính và đã nhận được ngoại lệ nếu danh sách chứa 7 đối tượng mà nó hoạt động tốt với 6 đối tượng.

Tôi đoán đó là vấn đề với Quy mô hợp đồng dữ liệu.

Khi tôi thay đổi ràng buộc của tôi trong tập tin cấu hình

<readerQuotas maxDepth="64" maxStringContentLength="2147483647" 
     maxArrayLength="2147483647" maxBytesPerRead="4096" /> 

để

<readerQuotas maxDepth="128" maxStringContentLength="2147483647" 
     maxArrayLength="2147483647" maxBytesPerRead="4096" /> 

đối tượng hợp đồng dữ liệu đạt đến dịch vụ để xử lý.

Trả lời

8

Cài đặt ReaderQuota được sử dụng để giới hạn các ràng buộc như được chỉ định bởi các thuộc tính. Nếu một yêu cầu vượt quá bất kỳ giới hạn nào, dịch vụ WCF sẽ tự động từ chối yêu cầu (rất thấp trên ngăn xếp dấu phẩy mà tôi tin) để thực hiện quá trình xử lý yêu cầu ít nhất có thể.

Ý tưởng là dịch vụ cam kết càng ít tài nguyên càng tốt để phục vụ yêu cầu (nếu vượt quá giới hạn nhất định) để giúp chống lại Denial-of-Service attacks - DDOS.

Lưu ý rằng giới hạn readQuota có thể được đặt trên cả máy chủ và máy khách. Điều này cho phép khách hàng được bảo vệ chống lại các máy chủ gian lận cũng như bảo vệ các máy chủ.