SharePoint サーバー オブジェクト モデルを使用してファイルを追加したい (--> コードがサーバー上で実行される)。コードは機能するが、 と の呼び出しFiles.Add
がSPListItem.Update()
非常に遅い。
5 MB のファイルの場合、 への呼び出しにFiles.Add
約 11 秒SPListItem.Update
かかり、メタデータを設定するための への呼び出しに約 4 秒かかります。
private void UploadSimple()
{
var metadata = GetSalesArticleInsertDemoData();
string fileName = "sample2.jpg";
FileStream file = File.OpenRead(fileName);
using(SPSite site = new SPSite(SPURL))
{
using(SPWeb web = site.OpenWeb())
{
SPList destinationList = GetListToBeUploadedIn(); // fast
SPFile fileDetails = destinationList.RootFolder.Files.Add("test000001.jpg", file, null, false); // slow
SPListItem newItem = fileDetails.ListItemAllFields;
FillListItemWithData(metadata, newItem); // fast, a few fields get filled with sample data
newItem.Update(); // slow
}
}
}
クライアント オブジェクト モデルを介して同じファイルをアップロードし、メタデータを設定すると、約 9 秒で完了し、ここでファイルをネットワーク経由で転送する必要があります。
遅さの原因を知っている、または手がかりを持っている人はいますか?