Số ViewSize
được chỉ định ở cấp hàm dựng. Tôi đã tìm thấy the documentation for the constructor nhưng không nói kích thước tối đa là bao nhiêu.Kích thước tối đa của một ItemView trong EWS là bao nhiêu?
Trả lời
Có giới hạn 2.147.483.647 vì loại dữ liệu của nó là Int32, Tôi đã sử dụng nó và cũng đã thử nghiệm không trả lại bất kỳ lỗi nào nếu chúng tôi vượt qua ItemView (2147483647);
Nó chỉ xác định kích thước trang của mục tìm kiếm, nếu có nhiều kết quả mục tìm kiếm hơn kích thước trang xem, các lệnh gọi tiếp theo sử dụng bù nhìn ItemView phải được thực hiện để trả về phần còn lại của kết quả.
ref - http://msdn.microsoft.com/en-us/library/exchange/dd633693%28v=exchg.80%29.aspx http://msdn.microsoft.com/en-us/library/system.int32.maxvalue.aspx
Các chính sách mặc định trong Exchange giới hạn kích thước trang đến 1000 mặt hàng. Đặt kích thước trang thành một giá trị lớn hơn số này không có hiệu quả thực tế. Các ứng dụng cũng nên tính đến thực tế rằng giá trị tham số điều chỉnh EWSFindCountLimit có thể dẫn đến một bộ kết quả một phần được trả về cho các ứng dụng thực hiện các yêu cầu đồng thời.
http://msdn.microsoft.com/en-us/library/office/jj945066(v=exchg.150).aspx
Bạn có thể chỉ định giá trị Int32 trong ItemView constructor nhưng chỉ ngàn mặt hàng sẽ được returnd. Bạn phải chỉ định một vòng lặp để nhận các mục còn lại.
bool more = true;
ItemView view = new ItemView(int.MaxValue, 0, OffsetBasePoint.Beginning);
view.PropertySet = PropertySet.IdOnly;
FindItemsResults<Item> findResults;
List<EmailMessage> emails = new List<EmailMessage>();
while (more)
{
findResults = service.FindItems(WellKnownFolderName.Inbox, view);
foreach (var item in findResults.Items)
{
emails.Add((EmailMessage)item);
}
more = findResults.MoreAvailable;
if (more)
{
view.Offset += 1000;
}
}
Cảm ơn bạn !! Điều này đã giúp tôi rất nhiều thời gian – Kage