我正在SharePoint 2007中开发WebPart,有时当我尝试使用以下代码从文档库中删除文件时:
SPWeb web = SPControl.GetContextWeb(WebPart.WebPartContext);
SPList list = web.GetList(web.Site.Url + "/ListName");
SPFile file = list.GetItemByUniqueId(new Guid(fileId)).File;
file.Delete();
我得到以下例外:
Cannot remove file "filename.bmp". Error Code: 3604.
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对象不为null。
为什么会发生这种情况?
答案 0 :(得分:0)
我能想到的唯一可能的事情是该文件当前已被检出或锁定以供其他用户编辑。试试这个......
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();
答案 1 :(得分:0)
您是否从文档库中删除文件?
如果是这样,您需要删除整个项目,因为没有文件,文档库项目不能存在。 因此,您需要以这种方式更改代码:
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();
希望它有所帮助!