Wskazówki: debugowanie aplikacji SharePoint przy użyciu narzędzia IntelliTrace
Za pomocą IntelliTrace, można łatwiej debugowania aplikacji, łącznie z tymi, które zawierają stron sieci web, na przykład rozwiązanie programu SharePoint.Tradycyjne debugery dać tylko Migawka stanu aplikacji w danym momencie.Jednakże można użyć IntelliTrace do przeglądu, a nawet przejdź do, przeszłych zdarzeń, które wystąpiły w aplikacji i kontekst, w którym wystąpiły.
W tym instruktażu przedstawiono sposób użycia IntelliTrace debugowania projektu programu SharePoint w Visual Studio.Ten projekt zawiera Odbiorca funkcji, która, gdy funkcja jest aktywna, dodaje zadanie do listy zadań i ogłoszenie do listy Anonsy.Gdy funkcja jest dezaktywowany, zadanie jest oznaczone jako ukończone, a drugi ogłoszenie zostanie dodany do listy Anonsy.Jednakże procedura zawiera błąd logiczny, który uniemożliwia poprawne uruchamianie projektu.Za pomocą IntelliTrace, będzie zlokalizować i poprawić błąd.
W tym instruktażu przedstawiono następujące zadania:
Tworzenie funkcji i odbiorca zdarzeń funkcji.
Reagowanie na zdarzenia funkcji przy użyciu kodu.
Odwołanie do listy zadań i ogłoszenia za pomocą kodu.
Znajdowanie i manipulowania elementami listy za pomocą kodu.
Za pomocą IntelliTrace, aby znaleźć i poprawić błąd kodu.
-
[!UWAGA]
Komputer może się różnić od instrukcji w tym temacie nazwy lub lokalizacje dla niektórych elementów interfejsu użytkownika.Te elementy w zależności od ustawień i wydanie Visual Studio.Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.
Wymagania wstępne
Potrzebne do przeprowadzenia tego instruktażu następujące składniki:
Obsługiwane wersje systemu Windows i programu SharePoint.Aby uzyskać więcej informacji, zobacz Wymagania dotyczące rozwiązań programu SharePoint.
Visual Studio 2012.
Odbiorca funkcji tworzenia
Najpierw należy utworzyć pusty projekt programu SharePoint z odbiornikiem funkcji.
Aby utworzyć odbiornik funkcji
Uruchom Visual Studio za pomocą Uruchom jako Administrator opcji.
Na pasku menu wybierz pliku, Nowa, Projekt.
Pojawi się okno dialogowe Nowy projekt.
W górnej części okna dialogowego wybierz opcję 3.5.NET Framework na liście wersje.NET Framework.
Dla języka, którego chcesz użyć, rozwiń węzeł SharePoint węzła, a następnie wybierz polecenie 2010 węzła.
W Szablony okienka, wybrać Projektu programu SharePoint 2010 szablonu, zmienić nazwę projektu, aby IntelliTraceTest, a następnie wybierz polecenie OK przycisk.
Kreatora dostosowania programu SharePoint pojawia się, w którym można określić witryny programu SharePoint dla projektu i poziom zaufania rozwiązanie.
Wybierz Wdrażanie rozwiązań gospodarstwa jako przycisk opcji, a następnie wybierz wykończenie przycisk.
IntelliTrace działa tylko na farmie rozwiązań.
W Solution Explorer, otworzyć menu skrótów dla Funkcje węzła, a następnie wybierz polecenie Dodać funkcję.
Pojawia się Feature1.Feature.
Otwórz menu skrótów z Feature1.feature, a następnie wybierz Dodać odbiorca zdarzenia Aby dodać moduł kodu do funkcji.
Dodawanie kodu do odbiornika funkcji
Następnie należy dodać kod do dwóch metod w odbiorniku funkcja: FeatureActivated i FeatureDeactivating.Te metody wyzwolić w każdym przypadku, gdy funkcja jest aktywowana lub dezaktywowana w programie SharePoint, odpowiednio.
Aby dodać kod do odbiornika funkcji
W górnej części Feature1EventReceiver klasy, Dodaj następujący kod do deklarowania zmiennych, które określają witryny programu SharePoint i podwitryny:
' SharePoint site/subsite. Private siteUrl As String = "https://localhost" Private webUrl As String = "/"
// SharePoint site/subsite. private string siteUrl = "https://localhost"; private string webUrl = "/";
Zamień FeatureActivated metoda następujący kod:
Public Overrides Sub FeatureActivated(ByVal properties As SPFeatureReceiverProperties) Try Using site As New SPSite(siteUrl) Using web As SPWeb = site.OpenWeb(webUrl) ' Reference the lists. Dim announcementsList As SPList = web.Lists("Announcements") Dim taskList As SPList = web.Lists("Tasks") ' Add a new announcement to the Announcements list. Dim listItem As SPListItem = announcementsList.Items.Add() listItem("Title") = "Activated Feature: " & Convert.ToString(properties.Definition.DisplayName) listItem("Body") = Convert.ToString(properties.Definition.DisplayName) & " was activated on: " & DateTime.Now.ToString() listItem.Update() ' Add a to-do task to the Task list. Dim newTask As SPListItem = taskList.Items.Add() newTask("Title") = "Deactivate feature: " & Convert.ToString(properties.Definition.DisplayName) newTask.Update() End Using End Using Catch e As Exception Console.WriteLine("Error: " & e.ToString()) End Try End Sub
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 a new 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 to-do 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()); } }
Zamień FeatureDeactivating metoda następujący kod:
Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties) Try Using site As New SPSite(siteUrl) Using web As SPWeb = site.OpenWeb(webUrl) ' Reference the lists Dim taskList As SPList = web.Lists("Tasks") Dim announcementsList As SPList = web.Lists("Announcements") ' Add an announcement that the feature was deactivated. Dim listItem As SPListItem = announcementsList.Items.Add() listItem("Title") = "Deactivated Feature: " & Convert.ToString(properties.Definition.DisplayName) listItem("Body") = Convert.ToString(properties.Definition.DisplayName) & " was deactivated on: " & DateTime.Now.ToString() listItem.Update() ' Find the task the feature receiver added to the Task list when the ' feature was activated. Dim qry As New SPQuery() qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactive</Value></Contains></Where>" Dim taskItems As SPListItemCollection = taskList.GetItems(qry) For Each taskItem As SPListItem In taskItems ' Mark the task as complete. taskItem("PercentComplete") = 1 taskItem("Status") = "Completed" taskItem.Update() Next End Using End Using Catch e As Exception Console.WriteLine("Error: " & e.ToString()) End Try End Sub
public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { 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 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'>Deactive</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, że kod jest dodawany do odbiornika funkcji, należy uruchomić aplikacji programu SharePoint, aby sprawdzić, czy działa poprawnie.Na przykład mały błąd jest zawarty w kodzie.Po wystąpieniu tego błędu, będą używać IntelliTrace do problemu.
Aby przetestować projekt
Wybierz klawisz F5, aby uruchomić projekt.
Podczas wdrażania, funkcja automatycznie uaktywnia, powodując jej odbiorca funkcji dodać ogłoszenie i zadania.
Po uruchomieniu programu SharePoint, Quick Launch okienka, wybierz zawiera listę łącze, a następnie wybierz na liście anonsów i listę zadań, aby wyświetlić ich zawartość.
Na liście anonsów nowy anons o nazwie Aktywowana funkcja: IntelliTraceTest_Feature1 został dodany i nowe zadanie o nazwie funkcji dezaktywacji: IntelliTraceTest_Feature1 został dodany do listy zadań.Stan zadania jest "Nie rozpoczęty".
Dezaktywuj tę funkcję przez otwarcie Akcje witryny menu, wybór Ustawienia witryny, a następnie wybierając Zarządzaj funkcjami witryny łącze w obszarze Akcje witryny.Wybierz Deactivate przycisk obok IntelliTraceTest Feature1, a następnie wybierz polecenie Dezaktywuj tę funkcję łącze na stronie ostrzeżenie.
W Quick Launch okienka, wybierz zadania link.
Zadanie stanu wartość powinna być "zakończone," i jego Ukończono % wartość powinna być "100%." Zamiast tego wartości są nadal w ich ustawienia domyślne.Błąd w kodzie zapobiega aktualizacji zadania.
Debugowanie projektu
Użyj IntelliTrace, aby zlokalizować i rozwiązać problem w kodzie.
Aby debugować projektu
W Visual Studio, w FeatureDeactivating metoda, zlokalizować SPQuery qry = new SPQuery(); linii w Visual C# lub Dim qry As New SPQuery() linii w języku Visual Basic.Wybierz klawisz F9, aby wstawić punkt przerwania na tej linii.
Ponieważ problem występuje, gdy funkcja jest dezaktywowany, linia ta jest logiczne miejsce, aby rozpocząć debugowanie.
Wybierz klawisz F5, aby uruchomić program i aktywować i dezaktywować funkcji, powtarzając kroki "Aby przetestować projekt" wcześniej w tym temacie.
Kiedy punkt przerwania jest uderzyć w FeatureDeactivating, w oknie IntelliTrace pojawia się i wyświetla listę wszystkich czynności, które aplikacja miała do tej pory.
W IntelliTrace okienka, w Zdarzenia na żywo kategorii, wybierz opcję mieszkańców link.
Wybierz klawisz F11, aby przejść do następnego wiersza kodu.
Za każdym razem wybierz F11 klucz innym "debuger:" wiersz zostanie dodany do IntelliTrace aplikacji historii debugowania.
Wybierz klawisz F11, aby przejść do następnego wiersza kodu.
W mieszkańców okienku rozwiń węzeł qry nazwy i pamiętać, że kwerendy wartość jest wyświetlana w kolorze czerwonym.
To rozróżnienie wskazuje, że kwerendy w celu lokalizowania zadanie niepoprawnie wyszukuje "Deactive" zamiast "Dezaktywowanie." Ten błąd oznacza, że zadanie nigdy nie znajduje się w kwerendzie listy zadań.
Wybierz klawisz F11, aby przejść do następnego wiersza kodu.
W mieszkańców okienku rozwiń taskItems nazwę, a należy zauważyć, że Liczba wartość zero (0).
Wartość ta wskazuje, że kolekcja taskItems nie zawiera żadnych qry elementy.
Wybierz klawisz F5, aby kontynuować, debugowanie.
Po zakończeniu działania programu, należy wybrać Złamać wszystkie w oknie IntelliTrace.
Należy wykonać ten krok, aby zapisać dane IntelliTrace.
Można wyświetlić informacje dotyczące stosowania przez użytkownika, na pasku narzędzi Intellitrace wybór Otwórz ustawienia IntelliTrace łącze i następnie, w Opcje okno dialogowe Wybieranie IntelliTrace zdarzeń i informacji przycisk opcji.
Na pasku narzędzi IntelliTrace, wybierz zapisać bieżącą sesję IntelliTrace przycisk, aby zapisać dane debugowania.
Plik będzie miał rozszerzenie .iTrace.
Na Visual Studio menu paska, wybierz opcję Debug, Stop Debugging.
Otwórz plik .iTrace.
Ten krok otwiera stronę IntelliTrace krótki opis, który dostarcza informacji o debugowaniu, takie jak dane wyjątku i listę wątków, które są używane w programie.
Rozwiń Listy wątków, wybierz Głównego wątku, a następnie wybierz polecenie Start Debugging przycisk.
W tym kroku uruchamiania sesji debugowania Visual Studio przy użyciu danych .iTrace.Aby wyświetlić dodatkowe szczegóły dotyczące zdarzenia, w oknie IntelliTrace, wybierz zdarzenie.
Wybierz mieszkańców link w debugera: krok dla SPListItemCollection taskItems = taskList.GetItems(qry);.
Zostanie wyświetlone okno mieszkańców.
W okienku zmiennych lokalnych, należy rozwinąć listę zmiennych, zlokalizować qry.Queryi sprawdzić, że kwerendy w celu lokalizowania zadanie niepoprawnie wyszukuje "Deactive" zamiast "Dezaktywowanie."
Ponowne badanie projektu
Teraz zidentyfikowaniu problemu za pomocą IntelliTrace, poprawić błąd, a następnie ponownie przetestować projekt.
Aby ponownie przetestować projekt
Zamknij sesję debugowania programu Visual Studio i ponownie otwórz projekt IntelliTraceTest, jeśli nie jest już otwarte.
W kodzie ciąg kwerendy (qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactive</Value></Contains></Where>"), zmień wartość Deactive do Deactivate.
Wybierz klawisz F5, aby ponownie uruchomić projekt.
Otwórz listę zadań i sprawdź, czy zadanie Deactivate stanu teraz prawidłowo ustawiono wartość "Ukończony" i jego Ukończono % wartość wynosi 100%.
Zobacz też
Koncepcje
Weryfikowanie i debugowanie kodu aplikacji programu SharePoint
Debugowanie aplikacji poprzez rejestrowanie wykonywania kodu za pomocą narzędzia IntelliTrace
Inne zasoby
Instruktaż: Sprawdź kod programu SharePoint za pomocą jednostki badań