Skip to content

Instantly share code, notes, and snippets.

@tiagoduarte
Last active September 7, 2020 16:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tiagoduarte/0b7da5924aacb8bb24a65267c3556661 to your computer and use it in GitHub Desktop.
Save tiagoduarte/0b7da5924aacb8bb24a65267c3556661 to your computer and use it in GitHub Desktop.
Release SharePoint document lock through server side code (C#)
SPList list = web.Lists[txtListTitle.Text];
SPListItem item = list.GetItemById(int.Parse(txtItemID.Text));
SPFile file = item.File;
if (file.LockType == SPFile.SPLockType.None)
{
txtOutput.Text = "File is not locked";
}
else
{
int lockUserID = file.LockedByUser.ID;
string lockId = file.LockId;
SPUser user = web.AllUsers.GetByID(lockUserID);
try
{
web.AllowUnsafeUpdates = true;
//no one but the user him/herself can release an exclusive lock
//http://blog.aspjava.com/2016/06/sharepoint-unlock-file-that-is.html
using (SPSite userSite = new SPSite(txtWebUrl.Text, user.UserToken))
{
using (SPWeb userWeb = userSite.OpenWeb())
{
SPList userList = userWeb.Lists[txtListTitle.Text];
SPListItem userItem = userList.GetItemById(int.Parse(txtItemID.Text));
SPFile userFile = userItem.File;
userWeb.AllowUnsafeUpdates = true;
userFile.ReleaseLock(lockId);
}
}
txtOutput.Text = "Lock released!";
}
catch (Exception ex)
{
txtOutput.Text = "Error: " + ex.Message;
}
finally
{
web.AllowUnsafeUpdates = false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment