2013-03-21 74 views
0

我在非常简单的代码中得到了此异常,并且我使用提升的特权运行它。 它在SharePoint 2010System.UnauthorizedAccessException由简单代码中的用户代码未处理

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; 
         }      
        } 
       }); 
      } 
     } 

回答

0

的问题是,它是用来自RunWithElevatedPriviliges外面传来一个SPSite对象时,SPSite对象是为了创建里面再次为这个工作。

相关问题