Passo a passo: Depurar um aplicativo do SharePoint usando o IntelliTrace
Usando o IntelliTrace, você pode depurar as soluções do SharePoint com mais facilidade. Os depuradores tradicionais fornecem apenas um instantâneo de uma solução no momento atual. No entanto, você pode usar o IntelliTrace para examinar os eventos anteriores ocorridos em sua solução e o contexto no qual eles ocorreram e navegar até o código.
Este passo a passo demonstra como depurar um projeto do SharePoint no Visual Studio usando o Microsoft Monitoring Agent para coletar dados do IntelliTrace de aplicativos implantados. Para analisar esses dados, você deve usar o Visual Studio Enterprise. Este projeto incorpora um receptor de recursos que, quando o recurso está ativado, adiciona uma tarefa à lista de tarefas e um anúncio à lista de Comunicados. Quando o recurso está desativado, a tarefa é marcada como concluída e um segundo anúncio é adicionado à lista Comunicados. No entanto, o procedimento contém um erro lógico que impede que o projeto seja executado de forma correta. Usando o IntelliTrace, é possível localizar e corrigir o erro.
Aplica-se a: As informações neste tópico se aplicam às soluções do SharePoint que foram criadas no Visual Studio.
Este passo a passo ilustra as seguintes tarefas:
Coletar dados do IntelliTrace usando o Microsoft Monitoring Agent
Depurar e Corrigir a Solução do SharePoint
Observação
Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, confira Personalizar o IDE.
Pré-requisitos
Você precisará dos seguintes componentes para concluir este passo a passo:
Edições com suporte do Windows e do SharePoint.
Visual Studio Enterprise.
Criar um receptor de recursos
Primeiro, você cria um projeto vazio do SharePoint que tem um receptor de recursos.
Crie um projeto de solução do SharePoint direcionado à versão do SharePoint que você instalou e nomeie-o para IntelliTraceTest.
O Assistente de Personalização do SharePoint é exibido, onde você pode especificar o site do SharePoint para seu projeto e o nível de confiança da solução.
Clique no botão Implantar como uma solução de farm e clique em Concluir.
O IntelliTrace opera apenas em soluções de farm.
No Gerenciador de Soluções, abra o menu de atalho do nó Recursos e escolha Adicionar Recurso.
Feature1.feature é exibido.
Abra o menu de atalho para Feature1.feature e escolha Adicionar Receptor de Eventos para adicionar um módulo de código ao recurso.
Adicionar Código ao Receptor do Recursos
Em seguida, adicione código a dois métodos no receptor de recursos: FeatureActivated
e FeatureDeactivating
. Esses métodos são disparados sempre que um recurso é ativado ou desativado no SharePoint, respectivamente.
Na parte superior da
Feature1EventReceiver
classe, adicione o seguinte código, que declara variáveis que especificam o site e o subsite do SharePoint:Substitua o método
FeatureActivated
pelo seguinte código:public override void FeatureActivated(SPFeatureReceiverProperties properties) { try { using (SPSite site = new SPSite(siteUrl)) { using (SPWeb web = site.OpenWeb(webUrl)) { // Reference the lists. SPList announcementsList = web.Lists["Announcements"]; SPList taskList = web.Lists["Tasks"]; // Add an announcement to the Announcements list. SPListItem listItem = announcementsList.Items.Add(); listItem["Title"] = "Activated Feature: " + properties.Definition.DisplayName; listItem["Body"] = properties.Definition.DisplayName + " was activated on: " + DateTime.Now.ToString(); listItem.Update(); // Add a task to the Task list. SPListItem newTask = taskList.Items.Add(); newTask["Title"] = "Deactivate feature: " + properties.Definition.DisplayName; newTask.Update(); } } } catch (Exception e) { Console.WriteLine("Error: " + e.ToString()); } }
Substitua o método
FeatureDeactivating
pelo seguinte código:public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { // The following line induces an error to demonstrate debugging. // Remove this line later for proper operation. throw new System.InvalidOperationException("A serious error occurred!"); try { using (SPSite site = new SPSite(siteUrl)) { using (SPWeb web = site.OpenWeb(webUrl)) { // Reference the lists. SPList taskList = web.Lists["Tasks"]; SPList announcementsList = web.Lists["Announcements"]; // Add an announcement that the feature was deactivated. SPListItem listItem = announcementsList.Items.Add(); listItem["Title"] = "Deactivated Feature: " + properties.Definition.DisplayName; listItem["Body"] = properties.Definition.DisplayName + " was deactivated on: " + DateTime.Now.ToString(); listItem.Update(); // Find the task that the feature receiver added to the Task list when the // feature was activated. SPQuery qry = new SPQuery(); qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactivate</Value></Contains></Where>"; SPListItemCollection taskItems = taskList.GetItems(qry); foreach (SPListItem taskItem in taskItems) { // Mark the task as complete. taskItem["PercentComplete"] = 1; taskItem["Status"] = "Completed"; taskItem.Update(); } } } } catch (Exception e) { Console.WriteLine("Error: " + e.ToString()); } }
Testar o projeto
Agora que o código foi adicionado ao receptor de recursos e o coletor de dados está em execução, implante e execute a solução do SharePoint para testar se ele funciona corretamente.
Importante
Para este exemplo, um erro é gerado no manipulador de eventos FeatureDeactivating. Mais adiante neste passo a passo, você localiza esse erro usando o arquivo .iTrace que o coletor de dados criou.
Implante a solução no SharePoint e abra o site do SharePoint em um navegador.
O recurso é ativado automaticamente, fazendo com que seu receptor de recursos adicione um anúncio e uma tarefa.
Exiba o conteúdo das listas Comunicados e Tarefas.
A lista Comunicados deve ter um novo anúncio chamado Recurso Ativado: IntelliTraceTest_Feature1e a lista Tarefas deve ter uma nova tarefa chamada Desativar recurso: IntelliTraceTest_Feature1. Se algum desses itens estiver ausente, verifique se o recurso está ativado. Se não estiver ativado, ative-o.
Desative o recurso executando as seguintes etapas:
No menu Ações do Site no SharePoint, escolha Configurações do Site.
Em Ações do Site, escolha o link Gerenciar recursos do site.
Próximo do IntelliTraceTest Feature1, clique no botão Desativar.
Na página Aviso, escolha o link Desativar esse recurso.
O manipulador de eventos FeatureDeactivating() lança um erro.
Coletar dados do IntelliTrace usando o Microsoft Monitoring Agent
Se você instalar o Microsoft Monitoring Agent no sistema que está executando o SharePoint, poderá depurar soluções do SharePoint usando dados mais específicos do que as informações genéricas retornadas pelo IntelliTrace. O agente funciona fora do Visual Studio usando cmdlets do PowerShell para capturar informações de depuração enquanto sua solução do SharePoint é executada.
Observação
As informações de configuração nesta seção são específicas para este exemplo. Para mais informações sobre outras opções de configuração, consulte Usando o coletor autônomo do IntelliTrace.
No computador que está executando o SharePoint, configure o Microsoft Monitoring Agent e comece a monitorar sua solução.
Desativar o recurso:
No menu Ações do Site no SharePoint, escolha Configurações do Site.
Em Ações do Site, escolha o link Gerenciar recursos do site.
Próximo do IntelliTraceTest Feature1, clique no botão Desativar.
Na página Aviso, escolha o link Desativar esse recurso.
Ocorreu um erro (nesse caso, devido ao erro gerado no manipulador de eventos FeatureDeactivating().
Na janela do PowerShell, execute o comando Stop-WebApplicationMonitoring para criar o arquivo .iTrace, interromper o monitoramento e reiniciar sua solução do SharePoint.
Stop-WebApplicationMonitoring "<SharePointSite>\<SharePointAppName>"
Depurar e Corrigir a Solução do SharePoint
Agora você pode exibir o arquivo de log do IntelliTrace no Visual Studio para localizar e corrigir o erro na solução do SharePoint.
Na pasta \IntelliTraceLogs, abra o arquivo .iTrace no Visual Studio.
A página Resumo do IntelliTrace é exibida. Como o erro não foi identificado, uma ID de correlação do SharePoint (um GUID) aparece na área de exceção sem tratamento da seção Análise . Clique no botão Pilha de Chamadas se desejar exibir a pilha de chamadas em que o erro ocorreu.
Clique no botão Depurar Exceção.
Se solicitado, carregue arquivos de símbolo. Na janela IntelliTrace, a exceção é realçada como "Lançado: erro grave!".
Na janela IntelliTrace, escolha a exceção para exibir o código que falhou.
Corrija o erro abrindo a solução do SharePoint e depois comentando ou removendo a instrução Lançar na parte superior do procedimento FeatureDeactivating().
Recompile a solução no Visual Studio e, em seguida, reimplante no SharePoint.
Desative o recurso executando as seguintes etapas:
No menu Ações do Site no SharePoint, escolha Configurações do Site.
Em Ações do Site, escolha o link Gerenciar recursos do site.
Próximo do IntelliTraceTest Feature1, clique no botão Desativar.
Na página Aviso, escolha o link Desativar esse recurso.
Abra a lista de tarefas e verifique se o valor Status da tarefa Desativar está "Concluído" e seu valor % Concluído é 100%.
Agora o código é executado corretamente.