Usar o Microsoft Azure WebJobs com o Office 365
Você pode implementar a funcionalidade de trabalho do temporizador usando o Microsoft Azure WebJobs ou o Windows Task Scheduler para executar tarefas no SharePoint Online. Um trabalho de temporizador é um processo repetitivo, agendado e em segundo plano que é executado no SharePoint para executar determinadas tarefas.
Por exemplo, você pode querer um trabalho de temporizador para copiar dados inseridos em uma lista do SharePoint em um banco de dados. No SharePoint Online, você não pode implantar soluções de farm, que é como os trabalhos de temporizador foram implantados no passado. Para implementar uma funcionalidade de trabalho de temporizador semelhante no SharePoint Online, você precisa executar um aplicativo de console como um WebJob do Azure. O aplicativo de console acessa o SharePoint Online usando o CSOM (modelo de objeto do lado do cliente).
Este artigo apresenta os conceitos básicos envolvidos na implantação de aplicativos de console como WebJobs do Azure para executar e acessar seus sites e conteúdo do SharePoint Online.
Observação
The code in this article is provided as-is, without warranty of any kind, either express or implied, including any implied warranties of fitness for a particular purpose, merchantability, or non-infringement.
Criar e executar um aplicativo de console como um WebJob do Azure
Para configurar seu aplicativo de console para ser executado como um WebJob do Azure, você precisa:
Crie uma conta de organização para o Azure WebJob usar para acessar seus sites e conteúdo do SharePoint.
Crie e configure o aplicativo de console.
Adicione código ao aplicativo de console.
Publique seu aplicativo de console como um WebJob do Azure.
Execute e verifique seu Azure WebJob.
Criar uma conta de organização
Você precisa criar uma conta para o Azure WebJob usar ao acessar sites e conteúdo do SharePoint. Para saber mais, confira Adicionar usuários individualmente ou em massa no Office 365 – Ajuda para Administradores.
Quando o Azure WebJob é executado, o campo Modificado por armazena e exibe o valor inserido em Nome de exibição da conta da organização. Verifique se você escolhe um nome de exibição que seus usuários podem identificar facilmente como a conta usada pelo Azure WebJob para acessar o SharePoint.
Criar e configurar o aplicativo de console
Para criar um aplicativo de console para ser executado como um WebJob do Azure, execute as seguintes etapas:
Crie um novo projeto de aplicativo de console. No Visual Studio, escolha Novo Projeto>Visual C#>Aplicativo> de ConsoleOK.
Depois que o aplicativo de console for criado, escolha FerramentasGerenciador de Pacotes>> NuGetGerenciar Pacotes NuGet para Solução>Online>Tudo.
Pesquise aplicativo para o SharePoint Web Toolkit.
Escolha Instalar e escolha OK.
Escolha Fechar.
Verifique se SharePointContext.cs e TokenHelper.cs foram adicionados ao projeto do aplicativo de console.
Salve as informações da sua conta no arquivo app.config adicionando o elemento appSettings mostrado. Altere SPOAccount e SPOPassword para o nome de usuário e a senha da conta da organização que você criou anteriormente.
<?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>
Cuidado
App.config armazena o nome de usuário e a senha da conta da organização em texto claro. Esse método é usado apenas para fins de demonstração e não deve ser usado na implantação de produção de seus WebJobs do Azure. Recomendamos criptografar a senha ou autenticar usando o OAuth com tokens de acesso. Para obter mais informações, confira a postagem no blog de Kirk Evans sobre como criar um suplemento do SharePoint como um trabalho de temporizador.
Adicionar código ao aplicativo de console
Em Program.cs, adicione o código a seguir ao aplicativo de console.
Adicione instruções de uso .
using Microsoft.SharePoint.Client; using System.Security; using System.Configuration;
Adicione os seguintes métodos à sua classe:
A principal entra no site do SharePoint e usa o CSOM para executar tarefas em seu site ou conteúdo. Este exemplo de código usa o CSOM para encontrar uma lista e gerar o número total de itens que estão na lista para a janela do console. Ao usar o Azure WebJobs, você pode ver a saída da janela do console no WebJob Executar Detalhes, que é explicado em Executar e verificar seu WebJob do Azure.
GetSPOSecureStringPassword lê sua senha de app.config.
GetSPOAccountName lê seu nome de usuário de 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;
}
}
Publicar seu aplicativo de console como um WebJob do Azure
Quando terminar de desenvolver seu aplicativo de console, você precisará implantar o aplicativo de console como um WebJob do Azure. Para implantar seu aplicativo de console como um WebJob do Azure, você pode:
Carregue seus binários em um Aplicativo Web do Azure e crie um WebJob do Azure usando o Microsoft portal do Azure.
- Os binários do projeto do Visual Studio podem ser encontrados nas pastas bin/Debug ou bin/Release do projeto do Visual Studio.
- Para criar o Aplicativo Web do Azure e carregar os binários, siga as etapas em Criar um aplicativo Web ASP.NET Core no Azure.
- Para criar o WebJob sob demanda, contínuo ou agendado do Azure, consulte Executar tarefas em segundo plano com WebJobs em Serviço de Aplicativo do Azure.
Publique seu Azure WebJob no Visual Studio. Para obter mais informações, consulte Habilitar a implantação do WebJobs sem um projeto Web.
Executar e verificar seu WebJob do Azure
Depois de concluir todas as etapas anteriores, o WebJob do Azure deve estar executando e executando tarefas em sua assinatura Office 365. Às vezes, talvez seja necessário executar a manutenção ou solucionar problemas de seus WebJobs do Azure. Para verificar se o WebJob do Azure está em execução:
Se o Azure WebJob atualizou um item do SharePoint, como um item de lista, o campo Modificado por exibe a conta da organização que o Azure WebJob usou para acessar o SharePoint.
Examine os logs de Detalhes do WebJob para seu WebJob do Azure. Os logs de Detalhes do WebJob permitem que você examine quando um trabalho foi executado, o sucesso ou a falha de uma execução de trabalho, qualquer saída do WebJob (por exemplo, quando Console.WriteLine foi chamado) e outros detalhes da execução do trabalho. Para obter mais informações, confira a seção Exibir o histórico de trabalho em Executar tarefas em segundo plano com WebJobs.