我正在嘗試使用EWS 2010託管API來獲取用戶郵箱的總大小。我還沒有找到一個Web服務方法來獲取這些數據,所以我想我會試着去計算它。我在另一個網站上發現了一個關於finding mailbox sizes with EWS 2007的看似適用的問題,但要麼我不理解它要求我做什麼,要麼這種方法不適用於EWS 2010.如何獲取Exchange Web Services 2010託管API的文件夾大小?
在代碼洞察中,我能寫什麼,我的想法是,將遞歸遍歷文件夾結構,並導致總共爲收件箱中的所有文件夾的方法:
private int traverseChildFoldersForSize(Folder f)
{
int folderSizeSum = 0;
if (f.ChildFolderCount > 0)
{
foreach (Folder c in f.FindFolders(new FolderView(10000)))
{
folderSizeSum += traverseChildFoldersForSize(c);
}
}
folderSizeSum += (int)f.ManagedFolderInformation.FolderSize;
return folderSizeSum;
}
(假設有一個內不超過10,000個文件夾這是一個安全的賭注......)
不幸的是,這是行不通的。
我開始使用此代碼遞歸:
Folder root = Folder.Bind(svc, WellKnownFolderName.Inbox);
int totalSize = traverseChildFoldersForSize(root);
但一個空引用異常被拋出,基本上說[folder].ManagedFolderInformation
是一個空對象引用。
爲清楚起見,我也試圖剛剛得到的根文件夾的大小:
Console.Write(root.ManagedFolderInformation.FolderSize.ToString());
哪個扔相同NRE異常,所以我知道這不僅僅是因爲一旦你到了一定深度ManagedFolderInformation不存在的目錄樹。
有關如何獲取用戶郵箱總大小的任何想法?我吠叫錯了樹嗎?
你救了我的一天,但你的byteformating isn't完美的,使用此: '靜態雙倍ConvertBytesToMb(長字節) { \t return(bytes/1024f)/ 1024f; }' – jwillmer 2012-02-14 15:55:53