我在非常简单的代码中得到了这个异常,并且我以提升的权限运行它。它在sharepoint 2010中
private void ChangeVersioningOnDocumentLibrary(SPListItem item, SPItemEventProperties properties, SPSite site)
{
string sitename = item[MeetingsCommon.Constants.FIELDS_TEXT_TITLE_NAME].ToString();
string prefix = item[MeetingsCommon.Constants.FIELDS_TEXT_TITLE_NAME].ToString().Substring(0, 2);
bool isConfirmed = item.TaxonomyFieldValueIsGivenValue(properties.AfterProperties, MeetingsCommon.Constants.FIELDS_MEETINGSTATUS_NAME, MeetingsCommon.Constants.TERMVALUE_MEETINGSTATUS_CONFIRMED, 1033);
bool isPublished = item.TaxonomyFieldValueIsGivenValue(properties.AfterProperties, MeetingsCommon.Constants.FIELDS_MEETINGSTATUS_NAME, MeetingsCommon.Constants.TERMVALUE_MEETINGSTATUS_PUBLISHED, 1033);
if (isConfirmed)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPWeb web = site.OpenWeb(prefix + "/" + sitename))
{
if (web.Exists)
{
web.AllowUnsafeUpdates = true;
SPList agendaPoints = web.GetSafeListByName(MeetingsCommon.Constants.LISTS_AGENDAPOINTS_NAME);
agendaPoints.EnableModeration = true;
agendaPoints.DraftVersionVisibility = DraftVisibilityType.Author;
agendaPoints.Update();
web.AllowUnsafeUpdates = false;
}
}
});
}
if (isPublished)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPWeb web = site.OpenWeb(prefix + "/" + sitename))
{
if (web.Exists)
{
web.AllowUnsafeUpdates = true;
SPList agendaPoints = web.GetSafeListByName(MeetingsCommon.Constants.LISTS_AGENDAPOINTS_NAME);
agendaPoints.EnableModeration = false;
agendaPoints.DraftVersionVisibility = DraftVisibilityType.Author;
agendaPoints.Update();
web.AllowUnsafeUpdates = false;
}
}
});
}
}