Сначала я создал консольное приложение, предназначенное для .NET Framework. 4.6.1, установил пакет nuget Microsoft.SharePointOnline.CSOM и добавил два примера метода для подключения к SharePoint с использованием жестко запрограммированных учетных данных пользователя. Это работает.
Код: Выделить всё
public static void CsomCall()
{
var password = "password";
var securePassword = new SecureString();
foreach (var c in password.ToCharArray()) securePassword.AppendChar(c);
using (ClientContext context = new ClientContext("https://siteurl"))
{
context.Credentials = new SharePointOnlineCredentials("user@domain", securePassword);
Web web = context.Web;
context.Load(web);
context.ExecuteQuery();
Console.WriteLine(web.Title);
}
}
private static void RestCall()
{
var password = "password";
var securePassword = new SecureString();
foreach (var c in password.ToCharArray()) securePassword.AppendChar(c);
var credentials = new SharePointOnlineCredentials("user@domain", securePassword);
using (WebClient client = new WebClient())
{
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
client.Credentials = credentials;
client.Headers.Add(HttpRequestHeader.ContentType, "application/json;odata=verbose");
client.Headers.Add(HttpRequestHeader.Accept, "application/json;odata=verbose");
var content = client.DownloadString("https://siteurl/_api/web/lists");
Console.WriteLine(content);
}
}
Для компиляции кода пришлось внести пару изменений:
- вместо .ExecuteQuery()
Код: Выделить всё
.ExecuteQueryAsync() - Обратите внимание: пароль — это простая строка в Microsoft.SharePoint.Client.Runtime.Portable.
Код: Выделить всё
var credentials = new SharePointOnlineCredentials("user@domain", password);
Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException: 'Свойство или поле «Название» не инициализировано. Он не был запрошен или запрос не был выполнен. Возможно, потребуется явно запросить его.
При запуске RestCall происходит сбой с ошибкой на клиенте.DownloadString:
System.Net.WebException: «Удаленный сервер возвратил ошибку: (401) Неавторизованный».
Можно ли настроить SharePointOnlineCredentials для работы с .NET Core? Поиск по переполнению стека показывает, что это должно быть возможно, но я просто не могу заставить это работать.
В конечном итоге мы хотели бы создать службу веб-API с использованием ASP. NET Core для создания документов для внутренних пользователей (чтение шаблонов документов из SharePoint, создание нового документа и сохранение обратно в SharePoint). Использование CSOM или REST и работа на данный момент в ОС Windows.
Подробнее здесь: https://stackoverflow.com/questions/528 ... m-net-core
Мобильная версия