Использование веб-заданий Microsoft Azure с Office 365
Вы можете реализовать функции задания таймера с помощью веб-заданий Microsoft Azure или планировщика задач Windows для выполнения задач в SharePoint Online. Задание таймера — это повторяющийся запланированный фоновый процесс, который выполняется в SharePoint для выполнения определенных задач.
Например, может потребоваться, чтобы задание таймера копировать данные, введенные в списке SharePoint, в базу данных. В SharePoint Online нельзя развертывать решения фермы, так как задания таймера развертывались в прошлом. Чтобы реализовать аналогичные функции задания таймера в SharePoint Online, необходимо запустить консольное приложение как веб-задание Azure. Консольное приложение обращается к SharePoint Online с помощью клиентской объектной модели (CSOM).
В этой статье представлены основные понятия, связанные с развертыванием консольных приложений в качестве веб-заданий Azure для запуска сайтов и содержимого SharePoint Online и доступа к ним.
Примечание.
Код, приведенный в этой статье, предоставляется "как есть" без какой-либо явной или подразумеваемой гарантии, включая подразумеваемые гарантии пригодности для какой-либо цели, для продажи или гарантии отсутствия нарушения прав иных правообладателей.
Создание и запуск консольного приложения в качестве веб-задания Azure
Чтобы настроить консольное приложение для запуска в качестве веб-задания Azure, необходимо:
Создайте учетную запись организации для веб-задания Azure для доступа к сайтам и содержимому SharePoint.
Создайте и настройте консольное приложение.
Добавьте код в консольное приложение.
Опубликуйте консольное приложение как веб-задание Azure.
Запустите и проверьте веб-задание Azure.
Создание учетной записи организации
Необходимо создать учетную запись для веб-задания Azure, который будет использоваться при доступе к сайтам и содержимому SharePoint. Дополнительные сведения см. в статье Добавление пользователей по одному или массово в Office 365 — справка для администраторов.
При запуске веб-задания Azure поле Изменено сохраняет и отображает значение, введенное в поле Отображаемое имя учетной записи организации. Убедитесь, что вы выбрали отображаемое имя, которое пользователи могут легко определить как учетную запись, используемую веб-заданием Azure для доступа к SharePoint.
Создание и настройка консольного приложения
Чтобы создать консольное приложение для запуска в качестве веб-задания Azure, выполните следующие действия.
Создайте проект консольного приложения. В Visual Studio выберите Новый проект>Visual C#>Консольное приложение>ОК.
После создания консольного приложения выберите Инструменты>Диспетчер> пакетов NuGetУправление пакетами NuGet для решения> всети>Все.
Выполните поиск по запросу App for SharePoint Web Toolkit.
Нажмите кнопку Установить, а затем нажмите кнопку ОК.
Нажмите кнопку Закрыть.
Убедитесь, что SharePointContext.cs и TokenHelper.cs добавлены в проект консольного приложения.
Сохраните сведения об учетной записи в файле app.config, добавив отображаемый элемент appSettings . Измените SPOAccount и SPOPassword на имя пользователя и пароль созданной ранее учетной записи организации.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <appSettings> <add key="SPOAccount" value="admin@contoso.onmicrosoft.com"/> <add key="SPOPassword" value="Contoso"/> </appSettings> </configuration>
Предостережение
App.config сохраняет имя пользователя и пароль учетной записи организации в виде ясного текста. Этот метод используется только в демонстрационных целях и не должен использоваться в рабочем развертывании веб-заданий Azure. Рекомендуется зашифровать пароль или выполнить проверку подлинности с помощью OAuth с маркерами доступа. Дополнительные сведения см. в записи блога Кирка Эванса о создании надстройки SharePoint в качестве задания таймера.
Добавление кода в консольное приложение
В файле Program.cs добавьте следующий код в консольное приложение.
Добавьте операторы using .
using Microsoft.SharePoint.Client; using System.Security; using System.Configuration;
Добавьте в класс следующие методы:
Основной вход на сайт SharePoint, а затем использует CSOM для выполнения задач на сайте или содержимом. В этом примере кода используется CSOM для поиска списка и вывода общего количества элементов в списке в окно консоли. При использовании веб-заданий Azure выходные данные окна консоли отображаются в разделе Сведения о выполнении веб-задания, которое описано в разделе Запуск и проверка веб-задания Azure.
GetSPOSecureStringPassword считывает пароль из app.config.
GetSPOAccountName считывает имя пользователя из app.config.
static void Main(string[] args)
{
using (ClientContext context = new ClientContext("https://contoso.sharepoint.com"))
{
// Use default authentication mode.
context.AuthenticationMode = ClientAuthenticationMode.Default;
context.Credentials = new SharePointOnlineCredentials(GetSPOAccountName(), GetSPOSecureStringPassword());
// Add your CSOM code to perform tasks on your sites and content.
try
{
List objList = context.Web.Lists.GetByTitle("Docs");
context.Load(objList);
context.ExecuteQuery();
if (objList != null && objList.ItemCount > 0)
{
Console.WriteLine(objList.Title.ToString() + " has " + objList.ItemCount + " items.");
}
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex.Message);
Console.WriteLine("ERROR: " + ex.Source);
Console.WriteLine("ERROR: " + ex.StackTrace);
Console.WriteLine("ERROR: " + ex.InnerException);
}
}
}
private static SecureString GetSPOSecureStringPassword()
{
try
{
Console.WriteLine("Entered GetSPOSecureStringPassword.");
var secureString = new SecureString();
foreach (char c in ConfigurationManager.AppSettings["SPOPassword"])
{
secureString.AppendChar(c);
}
Console.WriteLine("Constructed the secure password.");
return secureString;
}
catch
{
throw;
}
}
private static string GetSPOAccountName()
{
try
{
Console.WriteLine("Entered GetSPOAccountName.");
return ConfigurationManager.AppSettings["SPOAccount"];
}
catch
{
throw;
}
}
Публикация консольного приложения в качестве веб-задания Azure
Завершив разработку консольного приложения, необходимо развернуть консольное приложение в качестве веб-задания Azure. Чтобы развернуть консольное приложение в качестве веб-задания Azure, вы можете:
Отправьте двоичные файлы в веб-приложение Azure и создайте веб-задание Azure с помощью портал Azure Майкрософт.
- Двоичные файлы для проекта Visual Studio можно найти в папках bin/Debug или Bin/Release проекта Visual Studio.
- Чтобы создать веб-приложение Azure и отправить двоичные файлы, выполните действия, описанные в статье Создание веб-приложения ASP.NET Core в Azure.
- Сведения о том, как создать веб-задание Azure по запросу, непрерывное или запланированное, см. в статье Выполнение фоновых задач с помощью веб-заданий в Служба приложений Azure.
Опубликуйте веб-задание Azure из Visual Studio. Дополнительные сведения см. в разделе Включение развертывания веб-заданий без веб-проекта.
Запуск и проверка веб-задания Azure
После выполнения всех предыдущих шагов веб-задание Azure должно выполняться и выполнять задачи в подписке Office 365. Иногда может потребоваться выполнить обслуживание или устранить неполадки с веб-заданиями Azure. Чтобы убедиться, что веб-задание Azure запущено:
Если веб-задание Azure обновило элемент SharePoint, например элемент списка, в поле Изменено отображается учетная запись организации, которую веб-задание Azure использовало для доступа к SharePoint.
Просмотрите журналы сведений о веб-задании для веб-задания Azure. Журналы сведений о веб-задании позволяют просматривать время выполнения задания, успешное или неудачное выполнение задания, все выходные данные веб-задания (например, при вызове Console.WriteLine) и другие сведения о выполнении задания. Дополнительные сведения см. в разделе Просмотр журнала заданий в статье Выполнение фоновых задач с помощью веб-заданий.