Udostępnij za pośrednictwem


Przewodnik: debugowanie aplikacji programu SharePoint przy użyciu funkcji IntelliTrace

Korzystając z funkcji IntelliTrace, można łatwiej debugować rozwiązania programu SharePoint. Tradycyjne debugery dają tylko migawkę rozwiązania w bieżącej chwili. Można jednak użyć funkcji IntelliTrace, aby przejrzeć wcześniejsze zdarzenia, które wystąpiły w rozwiązaniu, oraz kontekst, w którym wystąpiły, i przejść do kodu.

W tym przewodniku pokazano, jak debugować projekt programu SharePoint w programie Visual Studio przy użyciu programu Microsoft Monitoring Agent w celu zbierania danych IntelliTrace z wdrożonych aplikacji. Aby przeanalizować te dane, musisz użyć programu Visual Studio Enterprise. Ten projekt zawiera odbiornik funkcji, który po aktywowaniu funkcji dodaje zadanie do listy Zadanie i anons do listy Anonsy. Po dezaktywowaniu funkcji zadanie zostanie oznaczone jako ukończone, a drugie ogłoszenie zostanie dodane do listy Anonsy. Jednak procedura zawiera błąd logiczny, który uniemożliwia prawidłowe uruchomienie projektu. Korzystając z funkcji IntelliTrace, zlokalizuj i naprawisz błąd.

Dotyczy: informacje w tym temacie dotyczą rozwiązań programu SharePoint utworzonych w programie Visual Studio.

W instruktażu przedstawiono następujące zagadnienia:

Wymagania wstępne

Następujące składniki są wymagane do przeprowadzenia tego instruktażu:

  • Obsługiwane wersje systemów Windows i SharePoint.

  • Visual Studio Enterprise.

Tworzenie odbiornika funkcji

Najpierw należy utworzyć pusty projekt programu SharePoint z odbiornikiem funkcji.

  1. Utwórz projekt rozwiązania programu SharePoint przeznaczony dla zainstalowanej wersji programu SharePoint i nadaj mu nazwę IntelliTraceTest.

    Zostanie wyświetlony Kreator dostosowywania programu SharePoint, w którym można określić zarówno witrynę programu SharePoint dla projektu, jak i poziom zaufania rozwiązania.

  2. Wybierz przycisk Wdróż jako rozwiązanie farmy, a następnie wybierz przycisk Zakończ.

    Funkcja IntelliTrace działa tylko w przypadku rozwiązań farmy.

  3. W Eksplorator rozwiązań otwórz menu skrótów dla węzła Funkcje, a następnie wybierz pozycję Dodaj funkcję.

    Zostanie wyświetlona funkcja Feature1.feature .

  4. Otwórz menu skrótów funkcji Feature1.feature, a następnie wybierz pozycję Dodaj odbiornik zdarzeń, aby dodać moduł kodu do funkcji.

Dodawanie kodu do odbiornika funkcji

Następnie dodaj kod do dwóch metod w odbiorniku funkcji: FeatureActivated i FeatureDeactivating. Te metody są wyzwalane za każdym razem, gdy funkcja jest aktywowana lub dezaktywowana odpowiednio w programie SharePoint.

  1. W górnej Feature1EventReceiver części klasy dodaj następujący kod, który deklaruje zmienne określające witrynę programu SharePoint i podwitrynę:

    // SharePoint site and subsite.
    private string siteUrl = "http://localhost";
    private string webUrl = "/";
    
  2. Zastąp metodę FeatureActivated poniższym kodem:

    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());
        }
    
    }
    
  3. Zastąp metodę FeatureDeactivating poniższym kodem:

    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());
        }
    }
    

Testowanie projektu

Teraz, gdy kod zostanie dodany do odbiornika funkcji, a moduł zbierający dane jest uruchomiony, wdróż i uruchom rozwiązanie programu SharePoint, aby sprawdzić, czy działa prawidłowo.

Ważne

W tym przykładzie w procedurze obsługi zdarzeń FeatureDeactivating jest zgłaszany błąd. W dalszej części tego przewodnika znajdziesz ten błąd przy użyciu pliku iTrace utworzonego przez moduł zbierający dane.

  1. Wdróż rozwiązanie w programie SharePoint, a następnie otwórz witrynę programu SharePoint w przeglądarce.

    Funkcja jest automatycznie aktywowana, co powoduje, że jej odbiornik funkcji doda ogłoszenie i zadanie.

  2. Wyświetl zawartość list Anonsy i Zadania.

    Lista Anonsów powinna zawierać nowe ogłoszenie o nazwie Aktywowana funkcja: IntelliTraceTest_Feature1, a lista Zadania powinna mieć nowe zadanie o nazwie Dezaktywuj funkcję: IntelliTraceTest_Feature1. Jeśli brakuje jednego z tych elementów, sprawdź, czy funkcja została aktywowana. Jeśli nie został aktywowany, aktywuj go.

  3. Dezaktywuj funkcję, wykonując następujące kroki:

    1. W menu Akcje witryny w programie SharePoint wybierz pozycję Ustawienia witryny.

    2. W obszarze Akcje witryny wybierz link Zarządzaj funkcjami witryny.

    3. Obok pozycji IntelliTraceTest Feature1 wybierz przycisk Dezaktywuj.

    4. Na stronie Ostrzeżenie wybierz link Dezaktywuj tę funkcję .

      Procedura obsługi zdarzeń FeatureDeactivating() zgłasza błąd.

Zbieranie danych IntelliTrace przy użyciu programu Microsoft Monitoring Agent

Jeśli zainstalujesz program Microsoft Monitoring Agent w systemie z uruchomionym programem SharePoint, możesz debugować rozwiązania programu SharePoint przy użyciu danych, które są bardziej szczegółowe niż ogólne informacje zwracane przez funkcję IntelliTrace. Agent działa poza programem Visual Studio przy użyciu poleceń cmdlet programu PowerShell w celu przechwytywania informacji debugowania podczas uruchamiania rozwiązania programu SharePoint.

Uwaga

Informacje o konfiguracji w tej sekcji są specyficzne dla tego przykładu. Aby uzyskać więcej informacji na temat innych opcji konfiguracji, zobacz Using the IntelliTrace stand-alone collector (Korzystanie z autonomicznego modułu zbierającego IntelliTrace).

  1. Na komputerze z uruchomionym programem SharePoint skonfiguruj program Microsoft Monitoring Agent i rozpocznij monitorowanie rozwiązania.

  2. Dezaktywuj funkcję:

    1. W menu Akcje witryny w programie SharePoint wybierz pozycję Ustawienia witryny.

    2. W obszarze Akcje witryny wybierz link Zarządzaj funkcjami witryny.

    3. Obok pozycji IntelliTraceTest Feature1 wybierz przycisk Dezaktywuj.

    4. Na stronie Ostrzeżenie wybierz link Dezaktywuj tę funkcję .

      Wystąpił błąd (w tym przypadku z powodu błędu zwróconego w procedurze obsługi zdarzeń FeatureDeactivating().

  3. W oknie programu PowerShell uruchom polecenie Stop-WebApplicationMonitoring , aby utworzyć plik iTrace, zatrzymać monitorowanie i ponownie uruchomić rozwiązanie programu SharePoint.

    Stop-WebApplicationMonitoring "<SharePointSite>\<SharePointAppName>"

Debugowanie i naprawianie rozwiązania programu SharePoint

Teraz możesz wyświetlić plik dziennika IntelliTrace w programie Visual Studio, aby znaleźć i naprawić błąd w rozwiązaniu programu SharePoint.

  1. W folderze \IntelliTraceLogs otwórz plik iTrace w programie Visual Studio.

    Zostanie wyświetlona strona Podsumowanie IntelliTrace. Ponieważ błąd nie został obsłużony, identyfikator korelacji programu SharePoint (identyfikator GUID) pojawia się w nieobsługiwanym obszarze wyjątku sekcji Analiza . Wybierz przycisk Stos wywołań, jeśli chcesz wyświetlić stos wywołań, w którym wystąpił błąd.

  2. Wybierz przycisk Debuguj wyjątek .

    Jeśli zostanie wyświetlony monit, załaduj pliki symboli. W oknie IntelliTrace wyjątek jest wyróżniony jako "Thrown: Serious error occurred!".

    W oknie IntelliTrace wybierz wyjątek, aby wyświetlić kod, który zakończył się niepowodzeniem.

  3. Napraw błąd, otwierając rozwiązanie programu SharePoint, a następnie komentując lub usuwając instrukcję throw w górnej części procedury FeatureDeactivating().

  4. Ponownie skompiluj rozwiązanie w programie Visual Studio, a następnie ponownie wdróż je w programie SharePoint.

  5. Dezaktywuj funkcję, wykonując następujące kroki:

    1. W menu Akcje witryny w programie SharePoint wybierz pozycję Ustawienia witryny.

    2. W obszarze Akcje witryny wybierz link Zarządzaj funkcjami witryny.

    3. Obok pozycji IntelliTraceTest Feature1 wybierz przycisk Dezaktywuj.

    4. Na stronie Ostrzeżenie wybierz link Dezaktywuj tę funkcję .

  6. Otwórz listę Zadanie i sprawdź, czy wartość Stan zadania Dezaktywuj ma wartość "Ukończono", a jej wartość % Wykonania wynosi 100%.

    Kod jest teraz uruchamiany prawidłowo.