Aracılığıyla paylaş


İzlenecek yol: IntelliTrace'i Kullanarak SharePoint Uygulamasında Hata Ayıklama

IntelliTrace kullanarak SharePoint çözümleri gibi web sayfaları dahil olmak üzere uygulamaların daha kolay ayıklayabilirsiniz.Geleneksel hata ayıklayıcıları yalnızca bir anda uygulamanızın durumunun anlık verin.Ancak, gözden geçirmek ve hatta gitmek için IntelliTrace, uygulamanızda geçmişteki olayları ve olay oluştuğu bağlam kullanabilirsiniz.

Bu anlatım IntelliTrace SharePoint projede hata ayıklamak için nasıl kullanılacağını gösterir Visual Studio.Bu proje özelliği etkinleştirildiğinde, görev listesi ve duyuruyu Duyurular listesi için bir görev ekler özellik alıcısı içerir.Özelliği devre dışı bırakıldığında görevi tamamlandı olarak işaretlendi ve ikinci bir duyuruyu Duyurular listesine eklenir.Ancak, proje düzgün çalışmasını engelleyen bir mantıksal hata yordamı içerir.IntelliTrace kullanarak bulun ve hatayı düzeltin.

Bu örneklerde aşağıdaki görevler gösterilir:

  • Bir özellik ve bir özellik Olay alıcısı oluşturma.

  • Kod kullanarak özellik olaylarını yanıtlama.

  • Kod kullanarak görev ve duyuru listeleri başvuruyor.

  • Bulma ve kod kullanarak liste öğelerini düzenleme.

  • IntelliTrace bulun ve kod hatasını düzeltmek için kullanma.

  • [!NOT]

    Bilgisayar adları veya konumları kullanıcı arabiriminin bazı öğeler için bu konudaki yönergeleri farklılık gösterebilir.Bu öğeler, ayarlarınızı ve sürümünüzü bağlı olarak Visual Studio.Daha fazla bilgi için bkz. Visual Studio ayarları.

Önkoşullar

Bu örneği tamamlamak için aşağıdaki bileşenler gerekmektedir:

Özellik alıcısı oluşturma

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

Özellik alıcısı oluşturmak için

  1. Başlat Visual Studio kullanarak yönetici olarak çalıştır seçeneği.

  2. Menü çubuğunda Seç Dosya, Yeni, Proje.

    Yeni Proje iletişim kutusu görüntülenir.

  3. İletişim kutusunun üstündeki seçim .net Framework 3.5 .net Framework sürümlerinin listesi.

  4. Kullanmak istediğiniz dil altında genişletin SharePoint düğümü, ardından seçin 2010 düğümü.

  5. İçinde şablonları bölmesinde seçin SharePoint 2010 proje şablon, proje adını değiştirmek IntelliTraceTestve sonra seçin Tamam düğmesi.

    SharePoint Özelleştirme Sihirbazı'nı görünür içinde SharePoint sitesi için projenizi ve çözüme güven düzeyini belirtebilirsiniz.

  6. Seçin dağıtma grubu çözümü olarak seçenek düğmesini ve sonra Son düğmesi.

    IntelliTrace yalnızca Grup çözümleri üzerinde çalışır.

  7. İçinde Çözüm Gezgini, kısayol menüsünü açma özellikleri düğümü ve sonra seçin Ekleme özelliği.

    Feature1.Feature görünür.

  8. Feature1.feature kısayol menüsünü açın ve sonra seçin Olay alıcı eklemek özelliği için kod modülü eklemek için.

Özellik alıcısı için kod ekleme

Ardından, özellik alıcısı iki yöntemi kodu ekleyin: FeatureActivated ve FeatureDeactivating.Bu yöntemlerin her bir özelliği etkinleştirilmiş veya SharePoint içinde sırasıyla etkinliği tetikler.

Özellik alıcısı için kod eklemek için

  1. Üstünde Feature1EventReceiver sınıfında, SharePoint sitesi ve alt site belirleyen değişkenleri bildirmek için aşağıdaki kodu ekleyin:

    ' SharePoint site/subsite.
    Private siteUrl As String = "https://localhost"
    Private webUrl As String = "/"
    
    // SharePoint site/subsite.
    private string siteUrl = "https://localhost";
    private string webUrl = "/";
    
  2. Yerine FeatureActivated yöntemini aşağıdaki kod ile:

    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());
        }
    
    }
    
  3. Yerine FeatureDeactivating yöntemini aşağıdaki kod ile:

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

Projeyi Test Etme

Özellik alıcısı kod eklenir, SharePoint uygulama düzgün çalışır olup olmadığını sınamak için çalıştırın.Bu örnek, küçük bir hata kodu bulunmaktadır.Hata oluştuktan sonra sorunu izlemek için IntelliTrace kullanacaktır.

Projeyi test etmek için

  1. F5 tuşuna basarak projeyi çalıştırın seçin.

    Dağıtım özelliğini otomatik olarak, duyuru ve bir görev eklemek, özellik alıcısı neden etkinleştirir.

  2. SharePoint içinde başlatıldıktan sonra Quick Launch bölmesinde seçin listeler bağlayın ve hem Duyurular listesi ve bunların içeriğini görüntülemek için görev listesini seçin.

    Duyurular listesinde adlı yeni bir duyuru özelliği etkinleştirildi: IntelliTraceTest_Feature1 eklendi ve adlı yeni bir görev devre dışı bırak özelliği: IntelliTraceTest_Feature1 görevler listesine eklendi.Görevin durumu "başlamadı."

  3. Açarak özelliği devre dışı Site eylemleri menüsünde seçme Site Ayarlarıve daha sonra seçerek site özellikleri yönet altında bağlantı Site eylemleri.Seçin etkinliğini yanındaki düğme IntelliTraceTest Feature1ve sonra seçin Deactivate bu özellik uyarı sayfasına bağlantı.

  4. İçinde Quick Launch bölmesinde seçin görevleri bağlantı.

    Görevin durum değer şimdi "tamamlanması," ve onun Tamamlanan % değeri "100 %" olmalıdır Bunun yerine, hala varsayılan ayarında değerlerdir.Kodda bir hata görev güncelleştirilmesini engeller.

Projenin hata ayıklama

IntelliTrace bulun ve kod, sorunu gidermek için kullanın.

Proje hata ayıklamak için

  1. İçinde Visual Studio, FeatureDeactivating yöntemini bulun SPQuery qry = new SPQuery(); satır Visual C# veya Dim qry As New SPQuery() satır Visual Basic.F9 tuşuna, o satırdaki bir kesme noktası eklemek için seçin.

    Özelliği devre dışı bırakıldığında sorun oluşur çünkü bu satırda hata ayıklama başlatmak için mantıksal bir yerdir.

  2. F5 tuşuna basarak programını yeniden çalıştırın ve etkinleştirmek ve bu konunun önceki kısımlarında "projeyi test" adımları yineleyerek özelliğini devre dışı bırakmak için seçin.

    Kesme noktası vurduğunda FeatureDeactivating, IntelliTrace penceresinde görünür ve tüm uygulama şu ana kadar sürdü adımları listeler.

  3. İçinde IntelliTrace bölmesi, Canlı olay kategorisi seçin Locals bağlantı.

  4. Sonraki satıra kodunun adım için F11 tuşuna seçin.

    F11 seçtiğiniz her zaman anahtar başka "hata ayıklayıcı:" hata ayıklama geçmişi uygulamanın IntelliTrace için satır eklenir.

  5. Sonraki satıra kodunun adım için F11 tuşuna seçin.

  6. İçinde Locals bölmesinde genişletin qry adı ve dikkat edin sorgu değer kırmızı renkte görünür.

    Bu ayrım yanlış görevi bulmak için sorgu "Etkinliğini." "Deactive" için arar gösterir. Bu hata, görev hiçbir zaman görev listesi sorguda bulunan anlamına gelir.

  7. Sonraki satıra kodunun adım için F11 tuşuna seçin.

  8. İçinde Locals bölmesinde genişletin TaskItems olarak adlandırın ve unutmayın sayısı sıfır (0) değeridir.

    Bu değer gösteren topluluğu taskItems herhangi bir qry öğeleri.

  9. F5 tuşuna basarak hata ayıklama devam etmek için seçin.

  10. Program tamamlandıktan sonra tercih Sonu tüm IntelliTrace penceresinde bağlantı.

    IntelliTrace verilerini kaydetmek için bu adımı gerçekleştirmeniz gerekir.

    IntelliTrace araç çubuğunda, uygulama tarafından çağrı bilgilerini görüntüleyebilirsiniz seçme Açık IntelliTrace ayarları , bağlantı, daha sonra seçenekleri iletişim kutusunu seçme IntelliTrace olayları ve çağrı bilgileri seçenek düğmesi.

  11. IntelliTrace araç çubuğundan seçin Geçerli IntelliTrace oturumunu Kaydet hata ayıklama verileri kaydetmek için düğme.

    Dosya .iTrace uzantısına sahip olacaktır.

  12. Üzerinde Visual Studio menü çubuğu, seçim Debug, Stop Debugging.

  13. .İTrace dosyasını açın.

    Bu adım, özel durum verileri gibi hata ayıklama bilgileri ve programda kullanılan iş parçacığı bir listesini sağlar IntelliTrace Özet sayfasını açar.

  14. Genişletin İş parçacığı liste, seçin Ana iş parçacığıve sonra seçin Start Debugging komutunu düğmesi.

    Bu adım hata ayıklama oturumu başlatır Visual Studio .iTrace verileri kullanarak.IntelliTrace penceresinde bir olayla ilgili diğer ayrıntıları görmek için olayı seçin.

  15. Seçim Locals bağlayın Hata Ayıklayıcı: için adım SPListItemCollection taskItems = taskList.GetItems(qry);.

    Locals penceresi görüntülenir.

  16. Locals penceresinde değişken listesini genişletin, bulmak qry.Queryve görev yanlış bulmak için sorgu "Etkinliğini." "Deactive" için arar doğrulayın

Proje retesting

IntelliTrace kullanarak sorunu tanımladınız, hatayı düzeltin ve projeyi yeniden sınayın.

Projeyi yeniden sınamak için

  1. Visual Studio hata ayıklama oturumunu kapatın ve zaten açık değilse, IntelliTraceTest projesini yeniden açın.

  2. Kodun Sorgu dizesinde (qry.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>Deactive</Value></Contains></Where>"), değeri değiştirmek Deactive için Deactivate.

  3. F5 tuşuna basarak projeyi yeniden çalıştırmak için seçin.

  4. Görev listesini açın ve aşağıdakileri doğrulayın Deactivate görevin durum değer şimdi doğru ayarlanmış "Tamamlandı" ve onun tamamlanma yüzdesi % 100 değeridir.

Ayrıca bkz.

Kavramlar

SharePoint Kodunu Doğrulama ve Hata Ayıklama

IntelliTrace ile Kod Yürütmeyi Kaydederek Uygulamanızda Hata Ayıklama

Diğer Kaynaklar

İzlenecek yol: Birim testleri kullanarak SharePoint kodunu doğrulayın.