Sdílet prostřednictvím


Návod: Ladění aplikace SharePoint pomocí IntelliTrace

Pomocí IntelliTrace můžete snadněji ladit řešení SharePointu. Tradiční ladicí programy poskytují pouze snímek řešení v aktuálním okamžiku. IntelliTrace ale můžete použít ke kontrole minulých událostí, ke kterým došlo ve vašem řešení, a kontextu, ve kterém k nim došlo, a přejít na kód.

Tento názorný postup ukazuje, jak ladit projekt SharePointu v sadě Visual Studio pomocí agenta Microsoft Monitoring Agent ke shromažďování dat IntelliTrace z nasazených aplikací. Pokud chcete tato data analyzovat, musíte použít Visual Studio Enterprise. Tento projekt zahrnuje příjemce funkce, který při aktivaci funkce přidá úkol do seznamu úkolů a oznámení do seznamu Oznámení. Po deaktivaci funkce se úkol označí jako dokončený a do seznamu Oznámení se přidá druhé oznámení. Tento postup ale obsahuje logickou chybu, která brání správnému spuštění projektu. Pomocí IntelliTrace vyhledáte a opravíte chybu.

Platí pro: Informace v tomto tématu platí pro sharepointová řešení vytvořená v sadě Visual Studio.

Tento návod znázorňuje následující úlohy:

Požadavky

K dokončení tohoto návodu budete potřebovat následující komponenty:

  • Podporované edice Windows a SharePointu

  • Visual Studio Enterprise.

Vytvoření přijímače funkcí

Nejprve vytvoříte prázdný projekt SharePointu, který má příjemce funkcí.

  1. Vytvořte projekt řešení SharePointu, který cílí na nainstalovanou verzi SharePointu, a pojmenujte ho IntelliTraceTest.

    Zobrazí se Průvodce přizpůsobením SharePointu, ve kterém můžete zadat sharepointový web pro váš projekt i úroveň důvěryhodnosti řešení.

  2. Zvolte tlačítko Nasadit jako řešení farmy a pak zvolte tlačítko Dokončit.

    IntelliTrace funguje pouze u řešení farmy.

  3. V Průzkumník řešení otevřete místní nabídku pro uzel Funkce a pak zvolte Přidat funkci.

    Zobrazí se funkce Feature1.feature .

  4. Otevřete místní nabídku funkce Feature1.feature a pak zvolte Přidat příjemce událostí a přidejte do funkce modul kódu.

Přidání kódu do příjemce funkce

Dále přidejte kód do dvou metod v přijímači funkce: FeatureActivated a FeatureDeactivating. Tyto metody se aktivují při aktivaci nebo deaktivaci funkce v SharePointu.

  1. V horní části Feature1EventReceiver třídy přidejte následující kód, který deklaruje proměnné, které určují sharepointový web a podřízený web:

    // SharePoint site and subsite.
    private string siteUrl = "http://localhost";
    private string webUrl = "/";
    
  2. Nahraďte metodu FeatureActivated následujícím kódem:

    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. Nahraďte metodu FeatureDeactivating následujícím kódem:

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

Testování projektu

Teď, když je kód přidaný do příjemce funkce a kolektor dat je spuštěný, nasaďte a spusťte řešení SharePointu a otestujte, jestli funguje správně.

Důležité

V tomto příkladu se v obslužné rutině události FeatureDeactivating vyvolá chyba. Později v tomto názorném postupu vyhledáte tuto chybu pomocí souboru .iTrace, který kolektor dat vytvořil.

  1. Nasaďte řešení do SharePointu a pak otevřete sharepointový web v prohlížeči.

    Tato funkce se automaticky aktivuje, což způsobí, že příjemce funkce přidá oznámení a úkol.

  2. Zobrazí obsah seznamů oznámení a úkolů.

    Seznam Oznámení by měl obsahovat nové oznámení s názvem Aktivovaná funkce: IntelliTraceTest_Feature1 a seznam úkolů by měl obsahovat nový úkol s názvem Deaktivovat funkci: IntelliTraceTest_Feature1. Pokud některá z těchto položek chybí, ověřte, jestli je tato funkce aktivovaná. Pokud není aktivovaný, aktivujte ho.

  3. Deaktivujte funkci provedením následujících kroků:

    1. V nabídce Akce webu v SharePointu zvolte Nastavení webu.

    2. V části Akce webu zvolte odkaz Spravovat funkce webu.

    3. Vedle funkce IntelliTraceTest Feature1 zvolte tlačítko Deaktivovat.

    4. Na stránce Upozornění zvolte odkaz Deaktivovat tuto funkci .

      Obslužná rutina události FeatureDeactivating() vyvolá chybu.

Shromažďování dat IntelliTrace pomocí agenta Microsoft Monitoring Agent

Pokud nainstalujete microsoft Monitoring Agent do systému, na kterém běží SharePoint, můžete ladit řešení SharePointu pomocí dat, která jsou konkrétnější než obecné informace, které IntelliTrace vrátí. Agent funguje mimo Visual Studio pomocí rutin PowerShellu k zachycení informací o ladění při spuštění řešení SharePointu.

Poznámka:

Informace o konfiguraci v této části jsou specifické pro tento příklad. Další informace o dalších možnostech konfigurace naleznete v tématu Použití samostatného kolektoru IntelliTrace.

  1. Na počítači se službou SharePoint nastavte microsoft Monitoring Agent a začněte monitorovat vaše řešení.

  2. Deaktivovat funkci:

    1. V nabídce Akce webu v SharePointu zvolte Nastavení webu.

    2. V části Akce webu zvolte odkaz Spravovat funkce webu.

    3. Vedle funkce IntelliTraceTest Feature1 zvolte tlačítko Deaktivovat.

    4. Na stránce Upozornění zvolte odkaz Deaktivovat tuto funkci .

      Dojde k chybě (v tomto případě kvůli chybě vyvolané obslužnou rutinou události FeatureDeactivating().

  3. V okně PowerShellu spusťte příkaz Stop-WebApplicationMonitoring , který vytvoří soubor .iTrace, zastaví monitorování a restartuje řešení SharePointu.

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

Ladění a oprava řešení SharePointu

Teď můžete v sadě Visual Studio zobrazit soubor protokolu IntelliTrace a vyhledat a opravit chybu v řešení SharePointu.

  1. Ve složce \IntelliTraceLogs otevřete soubor .iTrace v sadě Visual Studio.

    Zobrazí se stránka Souhrn IntelliTrace. Vzhledem k tomu, že se chyba nezpracovala, zobrazí se ID korelace SharePointu (GUID) v neošetřené oblasti výjimky oddílu Analýza . Pokud chcete zobrazit zásobník volání, ve kterém došlo k chybě, zvolte tlačítko Zásobník volání.

  2. Zvolte tlačítko Ladit výjimku.

    Pokud se zobrazí výzva, načtěte soubory symbolů. V okně IntelliTrace je výjimka zvýrazněná jako "Thrown: Serious error occurred!".

    V okně IntelliTrace zvolte výjimku, aby se zobrazil kód, který selhal.

  3. Opravte chybu tak, že otevřete řešení SharePointu a pak buď zakomentujte nebo odeberete příkaz throw v horní části procedury FeatureDeactivating().

  4. Znovu sestavte řešení v sadě Visual Studio a znovu ho nasaďte do SharePointu.

  5. Deaktivujte funkci provedením následujících kroků:

    1. V nabídce Akce webu v SharePointu zvolte Nastavení webu.

    2. V části Akce webu zvolte odkaz Spravovat funkce webu.

    3. Vedle funkce IntelliTraceTest Feature1 zvolte tlačítko Deaktivovat.

    4. Na stránce Upozornění zvolte odkaz Deaktivovat tuto funkci .

  6. Otevřete seznam úkolů a ověřte, že hodnota Stav úkolu Deaktivovat je Dokončená a její hodnota Dokončeno v % je 100 %.

    Kód se teď správně spustí.