2014-12-01 5 views
0

Я программно пытаюсь делегировать задачу рабочего процесса sharepoint 2013 пользователю «DOMAIN \ Test2» из пользователя «DOMAIN \ Test1». Его делегирование пользователю «DOMAIN \ Test2», но когда я пытаюсь получить URL-адрес элемента задачи с помощью делегированного пользователя («DOMAIN \ Test2»), я получаю следующую ошибку:У вас нет прав для ответа на этот вопрос

«У вас нет прав на ответьте на этот пункт ».

using (SPSite currentSite = new SPSite("http://tst:001/sites/Test")) 
    { 
     using (SPWeb currentWeb = currentSite.OpenWeb()) 
     { 

      string tasksList = "Workflow Tasks";      
      SPUser delegateTouser = currentWeb.EnsureUser("DOMAIN\\Test2"); 
      SPListItem listItem = currentWeb.Lists.TryGetList(tasksList).GetItemById(101); 
      listItem[SPBuiltInFieldId.AssignedTo] = delegateTouser; 
      listItem[SPBuiltInFieldId.WorkflowVersion] = "1"; 
      listItem.Update(); 
     } 
    } 
+2

Вы уверены, что это сообщение вы получаете? Это даже не правильно Английский ... – DavidG

+0

Вы правы. Сообщение не такое же, но похожее, что означает, что у пользователя нет доступа по крайней мере даже к разрешению. – user1133737

+0

Ну что такое ТОЧНОЕ сообщение? Без этого нам не удастся помочь. – DavidG

ответ

0

Используйте RunWithElevatedPrivileges при открытии сайта:

SPSecurity.RunWithElevatedPrivileges(delegate(){ 
using (SPSite currentSite = new SPSite("http://tst:001/sites/Test")) 
{ 
    using (SPWeb currentWeb = currentSite.OpenWeb()) 
    { 

     string tasksList = "Workflow Tasks";      
     SPUser delegateTouser = currentWeb.EnsureUser("DOMAIN\\Test2"); 
     SPListItem listItem = currentWeb.Lists.TryGetList(tasksList).GetItemById(101); 
     listItem[SPBuiltInFieldId.AssignedTo] = delegateTouser; 
     listItem[SPBuiltInFieldId.WorkflowVersion] = "1"; 
     listItem.Update(); 
    } 
} 
}); 
+0

Вместо того, чтобы обертывать 'использование (SPSite ...' в блоке RWEP, создать экземпляр 'SPSite' со вторым параметром в конструкторе -' SPUserToken.SystemAccount'. Это позволит вам выполнить то, что вам нужно сделать, как системную учетную запись, не используя кувалду, чтобы вернуть идентификатор процесса в идентификатор пула приложений. –

Смежные вопросы