Поделиться через


Использование веб-заданий Microsoft Azure с Office 365

Вы можете реализовать функции задания таймера с помощью веб-заданий Microsoft Azure или планировщика задач Windows для выполнения задач в SharePoint Online. Задание таймера — это повторяющийся запланированный фоновый процесс, который выполняется в SharePoint для выполнения определенных задач.

Например, может потребоваться, чтобы задание таймера копировать данные, введенные в списке SharePoint, в базу данных. В SharePoint Online нельзя развертывать решения фермы, так как задания таймера развертывались в прошлом. Чтобы реализовать аналогичные функции задания таймера в SharePoint Online, необходимо запустить консольное приложение как веб-задание Azure. Консольное приложение обращается к SharePoint Online с помощью клиентской объектной модели (CSOM).

В этой статье представлены основные понятия, связанные с развертыванием консольных приложений в качестве веб-заданий Azure для запуска сайтов и содержимого SharePoint Online и доступа к ним.

Примечание.

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

Создание и запуск консольного приложения в качестве веб-задания Azure

Чтобы настроить консольное приложение для запуска в качестве веб-задания Azure, необходимо:

  1. Создайте учетную запись организации для веб-задания Azure для доступа к сайтам и содержимому SharePoint.

  2. Создайте и настройте консольное приложение.

  3. Добавьте код в консольное приложение.

  4. Опубликуйте консольное приложение как веб-задание Azure.

  5. Запустите и проверьте веб-задание Azure.

Создание учетной записи организации

Необходимо создать учетную запись для веб-задания Azure, который будет использоваться при доступе к сайтам и содержимому SharePoint. Дополнительные сведения см. в статье Добавление пользователей по одному или массово в Office 365 — справка для администраторов.

При запуске веб-задания Azure поле Изменено сохраняет и отображает значение, введенное в поле Отображаемое имя учетной записи организации. Убедитесь, что вы выбрали отображаемое имя, которое пользователи могут легко определить как учетную запись, используемую веб-заданием Azure для доступа к SharePoint.

Создание и настройка консольного приложения

Чтобы создать консольное приложение для запуска в качестве веб-задания Azure, выполните следующие действия.

  1. Создайте проект консольного приложения. В Visual Studio выберите Новый проект>Visual C#>Консольное приложение>ОК.

  2. После создания консольного приложения выберите Инструменты>Диспетчер> пакетов NuGetУправление пакетами NuGet для решения> всети>Все.

  3. Выполните поиск по запросу App for SharePoint Web Toolkit.

  4. Нажмите кнопку Установить, а затем нажмите кнопку ОК.

  5. Нажмите кнопку Закрыть.

  6. Убедитесь, что SharePointContext.cs и TokenHelper.cs добавлены в проект консольного приложения.

  7. Сохраните сведения об учетной записи в файле 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 добавьте следующий код в консольное приложение.

  1. Добавьте операторы using .

     using Microsoft.SharePoint.Client;
     using System.Security;
     using System.Configuration; 
    
  2. Добавьте в класс следующие методы:

    • Основной вход на сайт 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 &amp;&amp; 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 должно выполняться и выполнять задачи в подписке Office 365. Иногда может потребоваться выполнить обслуживание или устранить неполадки с веб-заданиями Azure. Чтобы убедиться, что веб-задание Azure запущено:

  • Если веб-задание Azure обновило элемент SharePoint, например элемент списка, в поле Изменено отображается учетная запись организации, которую веб-задание Azure использовало для доступа к SharePoint.

  • Просмотрите журналы сведений о веб-задании для веб-задания Azure. Журналы сведений о веб-задании позволяют просматривать время выполнения задания, успешное или неудачное выполнение задания, все выходные данные веб-задания (например, при вызове Console.WriteLine) и другие сведения о выполнении задания. Дополнительные сведения см. в разделе Просмотр журнала заданий в статье Выполнение фоновых задач с помощью веб-заданий.

См. также