Я схожу с ума, так как два дня решаю вопрос. Проблема в;
Я делаю консольное приложение, которое общается с SharePoint Online, используя учетную запись глобального администратора (та, которая была указана как администратор при создании новой подписки). Я пытаюсь достичь того, что хочу добавить настраиваемое действие с использованием CSOM в каждое семейство сайтов и дочерний сайт Office 365. Этот код работает нормально, за исключением корневого семейства сайтов, которое предварительно создается Office 365 при регистрации (т. Е. https://xyz.sharepoint.com)
Для любого клиента для корневого семейства сайтов это дает мне ошибку ниже;
{"SchemaVersion": "15.0.0.0", "LibraryVersion": "16.0.3912.1201", "ErrorInfo": {"ErrorMessage": "Доступ запрещен. У вас нет разрешения на выполнение этого действия или доступ к этому ресурсу.", «ErrorValue»: нуль, «TraceCorrelationId»: «2a47fd9c-c07b-1000-cfb7-cdffbe3ab83a», «ErrorCode»: - 2147024891, «ErrorTypeName»: «System.UnauthorizedAccessException»}, «cdffbe3b3b3d-2a -cfb7-cdffbe3ab83a "}
Теперь пользователь является глобальным администратором. Я также снова добавил этого пользователя в качестве администратора семейства сайтов.
Тот же фрагмент кода отлично работает с другими семействами сайтов (семейство сайтов поиска, любое новое семейство сайтов ...).
вот код;
using (ClientContext spcollContext = new ClientContext(web.Url))
{
SecureString passWord = new SecureString();
foreach (char c in strAdminPassword.ToCharArray()) passWord.AppendChar(c);
SharePointOnlineCredentials creds = new SharePointOnlineCredentials(strAdminUser, passWord);
spcollContext.Credentials = creds;
Web currentweb = spcollContext.Web;
spcollContext.Load(currentweb);
spcollContext.ExecuteQuery();
// authCookie = creds.GetAuthenticationCookie(new Uri(web.Url));
var existingActions2 = currentweb.UserCustomActions;
spcollContext.Load(existingActions2);
spcollContext.ExecuteQuery();
var actions2 = existingActions2.ToArray();
foreach (var action in actions2)
{
if (action.Description == "CustomScriptCodeForEachsite" &&
action.Location == "ScriptLink")
{
action.DeleteObject();
spcollContext.ExecuteQuery();
}
}
var newAction2 = existingActions2.Add();
newAction2.Description = "CustomScriptCodeForEachsite";
newAction2.Location = "ScriptLink";
newAction2.ScriptBlock = scriptBlock;
newAction2.Update();
spcollContext.Load(currentweb, s => s.UserCustomActions);
spcollContext.ExecuteQuery(); // GETTING ERROR ON THIS LINE.
}
Примечание. Вышеупомянутая ошибка - это следы Fiddler.
TraceCorrelationId
из UnauthorizedException. Это в деталях исключения: 2a47fd9c-c07b-1000-cfb7-cdffbe3ab83a - person Glenn Ferrie   schedule 16.04.2015