İzlenecek yol: IntelliTrace kullanarak SharePoint uygulamasında hata ayıklama

IntelliTrace kullanarak SharePoint çözümlerinde daha kolay hata ayıklayabilirsiniz. Geleneksel hata ayıklayıcılar, geçerli anda yalnızca bir çözümün anlık görüntüsünü verir. Ancak IntelliTrace'i kullanarak çözümünüzde gerçekleşen geçmiş olayları ve bunların oluştuğu bağlamı gözden geçirebilir ve koda gidebilirsiniz.

Bu kılavuz, dağıtılan uygulamalardan IntelliTrace verilerini toplamak için Microsoft Monitoring Agent kullanarak Visual Studio'da bir SharePoint projesinde hata ayıklamayı gösterir. Bu verileri analiz etmek için Visual Studio Enterprise'ı kullanmanız gerekir. Bu proje, özellik etkinleştirildiğinde Görev listesine bir görev ve Duyurular listesine bir duyuru ekleyen bir özellik alıcısı içerir. Özellik devre dışı bırakıldığında görev tamamlandı olarak işaretlenir ve Duyurular listesine ikinci bir duyuru eklenir. Ancak yordam, projenin düzgün çalışmasını engelleyen mantıksal bir hata içerir. IntelliTrace kullanarak hatayı bulup düzelteceksiniz.

Şunlar için geçerlidir: Bu konudaki bilgiler, Visual Studio'da oluşturulan SharePoint çözümleri için geçerlidir.

Bu izlenecek yol aşağıdaki görevleri gösterir:

Önkoşullar

Bu izlenecek yolu tamamlamak için aşağıdaki bileşenlere ihtiyacınız vardır:

  • Desteklenen Windows ve SharePoint sürümleri.

  • Visual Studio Enterprise.

Özellik alıcısı oluşturma

İlk olarak, özellik alıcısı olan boş bir SharePoint projesi oluşturursunuz.

  1. Yüklediğiniz SharePoint sürümünü hedefleyen bir SharePoint çözüm projesi oluşturun ve bunu IntelliTraceTest olarak adlandırın.

    Hem projeniz için SharePoint sitesini hem de çözümün güven düzeyini belirtebileceğiniz SharePoint Özelleştirme Sihirbazı görüntülenir.

  2. Grup çözümü olarak dağıt seçeneği düğmesini ve ardından Son düğmesini seçin.

    IntelliTrace yalnızca grup çözümlerinde çalışır.

  3. Çözüm Gezgini Özellikler düğümünün kısayol menüsünü açın ve ardından Özellik Ekle'yi seçin.

    Feature1.feature görüntülenir.

  4. Feature1.feature kısayol menüsünü açın ve ardından Özelliğe bir kod modülü eklemek için Olay Alıcısı Ekle'yi seçin.

Özellik alıcısına kod ekleme

Ardından, özellik alıcısında iki yönteme kod ekleyin: FeatureActivated ve FeatureDeactivating. Bu yöntemler sharepoint'te sırasıyla bir özellik etkinleştirildiğinde veya devre dışı bırakıldığında tetikler.

  1. Sınıfının en üstüne Feature1EventReceiver , SharePoint sitesini ve alt sitesini belirten değişkenleri bildiren aşağıdaki kodu ekleyin:

    // SharePoint site and subsite.
    private string siteUrl = "http://localhost";
    private string webUrl = "/";
    
  2. FeatureActivated yöntemini aşağıdaki kod ile değiştirin:

    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. FeatureDeactivating yöntemini aşağıdaki kod ile değiştirin:

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

Projeyi test etme

Kod özellik alıcısına eklendiğine ve veri toplayıcının çalıştığına göre, sharepoint çözümünü dağıtın ve çalıştırarak düzgün çalışıp çalışmadığını test edin.

Önemli

Bu örnekte, FeatureDeactivating olay işleyicisinde bir hata oluşturulur. Bu kılavuzun ilerleyen bölümlerinde, veri toplayıcısının oluşturduğu .iTrace dosyasını kullanarak bu hatayı bulursunuz.

  1. Çözümü SharePoint'e dağıtın ve sharepoint sitesini tarayıcıda açın.

    Özellik otomatik olarak etkinleştirilir ve özellik alıcısının duyuru ve görev eklemesine neden olur.

  2. Duyurular ve Görevler listelerinin içeriğini görüntüleyin.

    Duyurular listesinde Etkin özellik: IntelliTraceTest_Feature1 adlı yeni bir duyuru olmalı ve Görevler listesinde Devre Dışı Bırak özelliği: IntelliTraceTest_Feature1 adlı yeni bir görev olmalıdır. Bu öğelerden biri eksikse özelliğin etkinleştirilip etkinleştirilmediğini doğrulayın. Etkinleştirilmemişse etkinleştirin.

  3. Aşağıdaki adımları gerçekleştirerek özelliği devre dışı bırakın:

    1. SharePoint'teki Site Eylemleri menüsünde Site Ayarları'nı seçin.

    2. Site Eylemleri'nin altında Site özelliklerini yönet bağlantısını seçin.

    3. IntelliTraceTest Feature1'in yanındaki Devre Dışı Bırak düğmesini seçin.

    4. Uyarı sayfasında Bu özelliği devre dışı bırak bağlantısını seçin.

      FeatureDeactivating() olay işleyicisi bir hata oluşturur.

Microsoft Monitoring Agent kullanarak IntelliTrace verilerini toplama

Microsoft Monitoring Agent'ı SharePoint çalıştıran sisteme yüklerseniz, IntelliTrace'in döndürdüğü genel bilgilerden daha özel verileri kullanarak SharePoint çözümlerinde hata ayıklayabilirsiniz. Aracı, SharePoint çözümünüz çalışırken hata ayıklama bilgilerini yakalamak için PowerShell cmdlet'lerini kullanarak Visual Studio dışında çalışır.

Not

Bu bölümdeki yapılandırma bilgileri bu örne özgüdür. Diğer yapılandırma seçenekleri hakkında daha fazla bilgi için bkz . IntelliTrace tek başına toplayıcısını kullanma.

  1. SharePoint çalıştıran bilgisayarda Microsoft Monitoring Agent'ı ayarlayın ve çözümünüzü izlemeye başlayın.

  2. Özelliği devre dışı bırakın:

    1. SharePoint'teki Site Eylemleri menüsünde Site Ayarları'nı seçin.

    2. Site Eylemleri'nin altında Site özelliklerini yönet bağlantısını seçin.

    3. IntelliTraceTest Feature1'in yanındaki Devre Dışı Bırak düğmesini seçin.

    4. Uyarı sayfasında Bu özelliği devre dışı bırak bağlantısını seçin.

      Bir hata oluşur (bu örnekte, FeatureDeactivating() olay işleyicisinde oluşan hata nedeniyle).

  3. PowerShell penceresinde Stop-WebApplicationMonitoring komutunu çalıştırarak .iTrace dosyasını oluşturun, izlemeyi durdurun ve SharePoint çözümünüzü yeniden başlatın.

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

SharePoint çözümünde hata ayıklama ve düzeltme

Artık SharePoint çözümündeki hatayı bulmak ve düzeltmek için Visual Studio'da IntelliTrace günlük dosyasını görüntüleyebilirsiniz.

  1. \IntelliTraceLogs klasöründe Visual Studio'da .iTrace dosyasını açın.

    IntelliTrace Özeti sayfası görüntülenir. Hata işlenemediğinden, Çözümleme bölümünün işlenmeyen özel durum alanında bir SharePoint bağıntı kimliği (GUID) görüntülenir. Hatanın oluştuğu çağrı yığınını görüntülemek istiyorsanız Çağrı Yığını düğmesini seçin.

  2. Hata Ayıklama Özel Durumu düğmesini seçin.

    İstenirse, sembol dosyalarını yükleyin. IntelliTrace penceresinde, özel durum "Oluşturuldu: Ciddi hata oluştu!" olarak vurgulanır.

    IntelliTrace penceresinde, başarısız olan kodu görüntülemek için özel durumu seçin.

  3. SharePoint çözümünü açıp featureDeactivating() yordamının en üstündeki throw deyimini açıklama satırı yaparak veya kaldırarak hatayı düzeltin.

  4. Çözümü Visual Studio'da yeniden derleyin ve sharepoint'e yeniden dağıtın.

  5. Aşağıdaki adımları gerçekleştirerek özelliği devre dışı bırakın:

    1. SharePoint'teki Site Eylemleri menüsünde Site Ayarları'nı seçin.

    2. Site Eylemleri'nin altında Site özelliklerini yönet bağlantısını seçin.

    3. IntelliTraceTest Feature1'in yanındaki Devre Dışı Bırak düğmesini seçin.

    4. Uyarı sayfasında Bu özelliği devre dışı bırak bağlantısını seçin.

  6. Görev listesini açın ve Devre Dışı Bırak görevinin Durum değerinin "Tamamlandı" ve Tamamlanma Yüzdesi değerinin %100 olduğunu doğrulayın.

    Kod artık düzgün çalışıyor.