Код ошибки: 3604 при удалении файла из библиотеки документов SharePoint - PullRequest
3 голосов
/ 30 июля 2010

Я разрабатываю веб-часть в SharePoint 2007, а иногда и при попытке удалить файл из библиотеки документов с кодом, подобным следующему:


SPWeb web = SPControl.GetContextWeb(WebPart.WebPartContext);

SPList list = web.GetList(web.Site.Url + "/ListName");

SPFile file = list.GetItemByUniqueId(new Guid(fileId)).File;

file.Delete();

Я получаю следующее исключение: <pre> Cannot remove file "filename.bmp". Error Code: 3604.</p> <p>Stack Trace: at Microsoft.SharePoint.Library.SPRequest.AddOrDeleteUrl(String bstrUrl, String bstrDirName, Boolean bAdd, UInt32 dwDeleteOp, Int32 iUserId, Guid& pgDeleteTransactionId) at Microsoft.SharePoint.SPFile.DeleteCore(DeleteOp deleteOp) at Microsoft.SharePoint.SPFile.Delete()

Объект SPFile не является нулевым.

Есть идеи, почему это происходит?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2010

Вы удаляете файл из библиотеки документов?

Если это так, вам нужно удалить весь элемент, поскольку элемент библиотеки документов не может существовать без файла. Поэтому вам нужно изменить код следующим образом:

SPWeb web = SPControl.GetContextWeb(WebPart.WebPartContext);
SPList list = web.GetList(web.Site.Url + "/ListName");
// delete whole item
SPListItem itemToDelete = list.GetItemByUniqueId(new Guid(fileId));
itemToDelete.Delete();

Надеюсь, это поможет!

0 голосов
/ 08 сентября 2010

Единственное, о чем я могу думать, это то, что файл в настоящее время извлечен или заблокирован для редактирования другим пользователем.Попробуйте это ...

SPWeb web = SPControl.GetContextWeb(WebPart.WebPartContext);
SPList list = web.GetList(web.Site.Url + "/ListName");
SPFile file = list.GetItemByUniqueId(new Guid(fileId)).File;

if (file.CheckOutStatus != SPFile.SPCheckOutStatus.None)
{
  file.UndoCheckOut();
  file.CheckOut();
}

file.Delete();
...