Ошибка при загрузке файла в онлайн-клиент SharePoint с использованием клиента CSOM в клиентском веб-приложении API в .net Framework 4.7.1 - PullRequest
0 голосов
/ 26 марта 2019

Когда я пытаюсь загрузить файл, используя токен на предъявителя, действительный для связи с моим клиентом SharePoint, я получаю эту ошибку:

URL недействителен. Это может относиться к несуществующему файлу или папке или к действительному файлу или папке, которых нет в текущей сети.

Для получения носителя SP я использую этот метод:

    private string BearerHeader
    {
        get
        {
            AuthenticationResult authResult = null;
            string result = string.Empty;
            if (HttpContext.Current != null)
            {
                string sourceBearer = HttpContext.Current.Request.Headers["Authorization"];
                if (sourceBearer.IndexOf(BearerPrefix) <= -1)
                {
                    return string.Empty;
                }
                ClientCredential clientCred = new ClientCredential(ConfigurationManager.AppSettings["ida:Audience"], ConfigurationManager.AppSettings["ida:Secret"]);
                UserAssertion userAssertion = new UserAssertion(sourceBearer.Split(' ')[1]);
                AuthenticationContext authContext = new AuthenticationContext(ConfigurationManager.AppSettings["ida:Instance"] + ConfigurationManager.AppSettings["ida:Tenant"]);
                var resource = new Uri(ConfigurationManager.AppSettings["SharePointCollection"]).GetLeftPart(UriPartial.Authority);
                authResult = authContext.AcquireTokenAsync(resource, clientCred, userAssertion).Result;
                result = authResult.AccessToken;
            }

            return BearerPrefix + result;
        }
    }

Токен на предъявителя работает с SPQuery, другие читают и удаляют команды.

Когда я использую один и тот же код с контекстом учетной записи службы. загрузка работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...