Makale Özeti

Microsoft SharePoint Servisleri ile kullanmak üzere geliştirdiğiniz WebPart’larda Microsoft Visual Studio .NET ile nasıl hata ayıklama yapılır.

Makale

Web Part’larda Hata Ayıklama


Giriş


Bilindiği gibi WebPart’lar Microsoft Visual Studio .NET ile geliştirilebilmektedir. Bu uygulamacıklar yönetilen kod ile geliştirilen ASP.NET kontrol uygulamacıklarına benzerler. Bu kontrolleri yazdıktan sonra yayınlamadan önce test edilmeleri ve varsa hataların ayıklanması gerekir. Bu makalede geliştirmiş olduğunuz WebPart projelerinde hata ayıklama süreci için sisteminizi nasıl konfigüre etmeniz gerektiği anlatılmaktadır. Bir WebPart uygulama projesinde hata ayıklaması yapabilmeniz için Windows SharePoint Services 2.0’ın ve Visual Studio .NET (7.0 veya 7.1 versiyonu)’in sistemde kurulu olması gerekmektedir. Ayrıca, Microsoft Windows SharePoint servislerinin üzerinde çalıştığı sanal sunucu ile eşleştirilmiş sistem dizinine yazma hakkınızın olması (örnek: C:\Inetpub\wwwroot and its subdirectories) ve ASP.NET işlemi için hata ayıklama (debug) hakkınızın olması gerekmektedir.

Projeyi Açmak ve BreakPoint’lerin Yerleştirilmesi

Bu bölümde sırasıyla Visual Studio’yu açacağız. Projemizi yükleyeceğiz. Gerekli dosyaları ve SharePoint portal sitemizi hata ayıklamaya hazırlayacağız. Bu makalede WebPart uygulamacığınızın varsayılan SharePoint portal sitesini kullandığı varsayılmaktadır.

Sitenin Hata Ayıklama İçin Hazırlanması
   1. Bilgisayarınızıde “Başlat (Start)” butonuna basınız. Programlar kısmından Microsoft Visual Studio.NET’i açınız.

   2. Microsoft Visual Studio.NET içerisinde “File (Dosya)” ana menüsü altındaki “Open (Aç)” menüsünü seçiniz.

   3. Hata ayıklaması yapmak istediğiniz WebPart projesinin bulunduğu dizine giderek, ilgili proje dosyasını seçiniz.

   4. Visual Studio.NET içerisinde “Solution Explorer (Çözüm Gezgini)” penceresi kapalıysa açınız. Bu pencerede proje isminin üzerine fare ile gelerek sağ tuş ile açılan menüden “Properties (Özellikler)” menüsünü seçiniz.

   5. Açılan pencereden “Configuration Properties (Konfigürasyon Özellikleri)” seçeneğini tıklayınız.

   6. Açılan ekranda “Outputs (Çıktılar)” altından, “Output Path (Çıktı Dizini)” değerinin aşağıdaki gibi olduğu kontrol ediniz:

   < Yerel_Dizin>:\InetPub\WWWRoot\bin\

   7. Proje özellikleri pencresini “OK (Tamam)” butonu ile kapatınız.

   8. Şimdi WebPart uygulamacığımızın “Safe Control List (Güvenli Kontroller Listesinde)” olup olmadığını kontrol etmemiz gerekiyor. Bunu yapmak için aşağıdaki adımları izleyiniz:

       8.1 “Windows Explorer (Windows Gezgini)” ile aşağıdaki dizine gidiniz:

       <  Yerel_Dizin>:\InetPub\WWWRoot\bin\.

       8.2 Buradaki “Web.config” dosyasına çift tıklayın.

       8.3 Web.config dosyası içerisinde < SafeControls> node’unu arayınız.

       8.4 < SafeControls> node’u altındaki listede şu anda üzerinde çalışıyor olduğunuz WebPart’ın kayıtlı olup olmadığını kontrol edin. Eğer listede üzerinde çalışıyor olduğunuz WebPart yoksa onu bu listeye aşağıdaki şekilde eklemeniz gerekiyor:

       < SafeControl Assembly="assembly_name,
       Version=assembly_version,
       Culture=assembly_culture, PublicKeyToken=assembly_public_key_token"
       Namespace="assembly_namespace" TypeName="*" Safe="True"/>


       8.5 Web.Config dosyasını kaydedin ve kapatın.

BreakPoint’lerin Yerleştirilmesi
   1. Microsoft Visual Studio.NET içerisinde açmış olduğumuz projede kendihata ayıklama yapmak istediğiniz WebPart’ların kodlarını açın.

   2. WebPart kodlarının birinin içerisinde, “breakpoint” yerleştirmek istediğiniz bir satırın üzerine fare ile gelerek sağ tuşa basın ve açılan menüdeki “Insert Break Point (Bir BreakPoint Ekle)” seçeneğini tıklayın. Örneğin, RenderWebPart metodunda hata ayıklama yapmak için bu metodun ilk satırına gelerek yukarıdaki işlemi yapabilirsiniz.

   3. Bu dosya içerisinde “breakpoint” yerleştirmek istediğiniz yerlerin tümü için 2. adımı bu dosya üzerinde tekrarlayın.

   4. Diğer WebPart’lar içerisinde hata ayıklama yapmak istediğiniz diğer yerler için 1. ve 2. adımları tekrarlayın.

ASP.NET (W3wp) Proses’ine Bağlantının Kurulması

Proje dosyanızı başarılı biçimde açıp, gerekli “breakpoint”leri yerleştirdikten sonraki adım hata ayıklama işlemine başlamak için ASP.NET W3wp.exe prosesi ile Visual Studio.Net arasındaki bağlantının kurulmasıdır. ASP.NET prosesine bağlantı kurmak için:

   1. Varsayılan SharePoint portal sitesi üzerinde test amaçlı bir WebPart sayfası yaratın.

   2. WebPart’ınızı bu sayfaya ekleyin.

   3. Hata ayıklayıcınızı W3wp prosesine bağlayın. Bunu yapmak için aşağıdaki adımları takip ediniz:

       3.1 Visual Studio.Net’te “Debug (Hata Ayıkla)” ana menüsünden “Processes (Proses)” seçeneğini tıklayın:

       3.2 Açılan pencerede “Show system processes (Sistem proseslerini göster)” kutucuğunun seçili olup olmadığını kontrol edin; değilse bu kutucuğu seçili hale getirin.

       3.3 Yine bu pencerede “Show processes in all sessions (Tüm oturumlardaki prosesleri göster)” kutucuğunun seçili olup olmadığını kontrol edin; değilse bu kutucuğu seçili hale getirin.

       3.4 Bu penceredeki “Available Processes ()” alanı içerisinde listelenen “W3wp.exe” prosesini seçin ve daha sonra yan taraftaki “Attach (Bağla)” butonuna basın.

       3.5 Açılan pencerede “Choose the program types that you want to debug (Hata ayıklama yapmak istediğiniz program tipleri)” liste alanında “Common Language Runtime” seçeneğini seçili hale getirin ve “OK (Tamam)” butonuna basın.

       3.6 Ana proses penceresinde “Close (Kapat)” butonuna basın.

Hata Ayıklama


ASP.NET W3wp prosesi ile Visual Studio.Net arasında hata ayıklamak için bağlantı kurduktan sonra, hata ayıklama işlemine başlayabilirsiniz. Bunu yapmak için bir web tarayıcısı kullanarak portalde oluşturmuş olduğunuz içerisinde hata ayıklaması yapacağınız WebPart’ı barındıran test sayfasını açın. Sayfa render edilirken, sayfada bulunan WebPart’ın kodunda üzerine “breakpoint” yerleştirdiğiniz satır işlenmeye başladığında kontol web tarayıcısından Visual Studio hata ayıklayıcısına geçecektir. Kontrol Visual Studio.Net’e geçtikten sonra WebPart’ınızı fonksiyonel açıdan test edebilir, hata ayıklama işlemini yapabilirsiniz.

Hata ayıklama WebPart’iniz içerisindeki birçok reel ve potansiyel hatayı bulmanızda oldukça yardımcı olacaktır. Ancak, hata ayıklama yaparak tüm problemleri farketmeniz mümkün olmayabilir. Örneğin, eğer WebPart sayfası erişilemeyen bir uygulamacığa referans ediyorsa, bu durumu hata ayıklama ile göremeyebilirsiniz. Bu gibi durumlarda CallStack ve Tracing kullanmanız gerekebilir.

CallStack Özelliğinin Kullanılması

Windows SharePoint Servisleri web.config içinde yeralan “CallStack (Çağrı Kuyruğu)” özelliğini “override” eder. “CallStack” özelliği, ASP.NET prosesinin lokal veya uzaktaki istemcilere bir sayfa göndermesi sırasında oluşan bir hata durumunda istemciye o anki “callstack”in ve hata mesajının gösterilip gösterilmeyeceğini belirler. Bu özelliğin varsayılan değeri ”disabled (kapalı)”dır. Microsoft SharePoint servisleri kurulum sırasında CallStack özelliğini kapatır. Bu nedenle bir hata oluştuğunda istemciye hata ile ilgili kısıtlı bilgi gösterilir. CallStack bilgisini ve hata mesajının tamamının istemcide gösterilmesi için web.config içerisindeki “CallStack” özelliğinin değerinin “enabled (açık)” hale getilirmesi gerekir. Bunu yapmak için aşağıdaki adımları izleyebilirsiniz:

   1. Bir “Windows Explorer (Windows Gezgini)” açarak aşağıdaki dizine gidiniz:

   < Yerel_Dizin>:\InetPub\WWWRoot\bin\

   2. Bu dizinde yeralan “Web.config” dosyasını açınız.

   3. Web.config dosyası içerisinde < SharePoint> node’unu bulunuz.

   4. < SharePoint> node’u içerisinde, < SafeMode MaxControls="50" CallStack="false"/> node’unu < SafeMode MaxControls="50" CallStack="true"/> olarak değiştiriniz.

   5. Yaptığınız değişiklikleri kaydederek dosyayı kapatınız.

Bu değişiklikten sonra, SharePoint servisleri altında bir hata oluştuğunda istemciye hatayı detayları ile açıklayan ve çağrı kuyruğunu gösteren ASP.NET sayfası gösterilecektir. Burada “CallStack” özelliğinde yapılan değişik, hem lokal hem de uzaktan erişen istemciler için geçerli olacaktır.

Tracing Özelliğinin Kullanılması

ASP.NET içerisinde “tracing (tarihçe)” özelliğinin kullanılması sayesinde, programlama yaptığınız sunucu ve üzerinde koşan uygulamalar ile ilgili bilgilere erişebilirsiniz. “Tracing” özelliğini sadece bir sayfa için kullanabileceğiniz gibi, bir sitenin bütünü için de kullanmanız mümkündür. Bunun yanında tracing özelliği sadece yerel kullanıcılar için açılabilir. ASP.NET’in “tracing” özelliğini yerel sunucunuzda açmak için aşağıdaki adımları takip ediniz:

   1. Bir “Windows Explorer (Windows Gezgini)” açarak aşağıdaki dizine gidiniz:

   <  Yerel_Dizin>:\inetpub\wwwroot\bin\

   2. Bu dizinde yeralan “Web.config” dosyasını açınız.

   3. Web.config dosyası içerisinde < system.web> node’unu bulunuz.

   4. < system.web> node’u içerisine aşağıdaki satırı ekleyiniz:

   <  trace enabled="true" pageOutput="true"/>

   5. Yaptığınız değişiklikleri kaydederek dosyayı kapatınız.

Bu değişiklikle birlikte WebPart’ınızı içerisine yerleştirdiğiniz test sayfasının altkısmında sunucu ile ilgili bilgilerin gösterildiğini görebilirsiniz.

Uzaktaki Bir Sunucu Üzerinde Geliştirme ve Hata Ayıklama Yapmak

Uzaktaki bir sunucu üzerinde geliştirme ve hata ayıklama yapabilmek için kendi bilgisayarınızda Visual Studio.Net’in ve uzaktaki sunucuda Microsoft SharePoint Servislerinin kurulu olması gerekmektedir. Uzaktaki bir sunucu üzerinde geliştirme ve hata ayıklama yapabilmek için aşağıdaki adımları takip ediniz:

   1. Uzaktaki sunucuda SharePoint sanal sunucusunu barındıran dizini paylaşıma açınız. Windows SharePoint Services sanal sunucunun eşleştirildiği varsayılan dizin aşağıdaki gibidir:

   <  Yerel_Dizin>:\InetPub\wwwroot

   2. Paylaşıma açtığınız bu dizin ve alt dizinlerinde okuma ve yazma haklarınızın olması gerekmektedir.

   3. Uzak sunucuda Microsoft.SharePoint.dll kod kütüphanesi dosyasının bulunduğu dizini paylaşıma açınız. Microsoft.SharePoint.dll kod kütüphanesini barındıran varsayılan dizin aşağıdaki gibidir:

   <  Yerel_Dizin>:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\ISAPI

   4. Paylaşıma açtığınız bu dizinde okuma hakkınızın olması geremektedir.

   5. Kendi bilgisayarınızda da gerekli ayarlamaları yapmak için aşağıdaki adımları takip ediniz:

       5.1 Masaüstünden, “Start (Başlat)” menüsü altında, “Programs (Programlar)” altından Microsoft Visual Studio .NET’i bulup tıklayınız.

       5.2 Microsoft Visual Studio.Net içerisinde “File (Dosya)” anamenüsü altından “Open (Aç)” seçeneğini tıklayınız.

       5.3 Açılan pencerede hata ayıklaması yapmak istediğini WebPart projenizi barındıran dizine gidiniz ve “Open (Aç)” butonuna tıklayınız.

       5.4. Visual Studio.NET içerisinde “Solution Explorer (Çözüm Gezgini)” penceresi kapalıysa açınız. Bu pencerede proje isminin üzerine fare ile gelerek sağ tuş ile açılan menüden “Properties (Özellikler)” menüsünü seçiniz.

       5.5 Right-click the project name, and then click Properties.

       5.6 Açılan pencereden “Configuration Properties (Konfigürasyon Özellikleri)” seçeneğini tıklayınız.

       5.7 Açılan ekranda “Outputs (Çıktılar)” altından, “Output Path (Çıktı Dizini)” değerinin aşağıdaki gibi olduğu kontrol ediniz:

:\InetPub\WWWRoot\bin\

       5.8 Proje özellikleri pencresini “OK (Tamam)” butonu ile kapatınız.

       5.9 Şimdi WebPart uygulamacığımızın “Safe Control List (Güvenli Kontroller Listesinde)” olup olmadığını kontrol etmemiz gerekiyor. Bunu yapmak için aşağıdaki adımları izleyiniz:

           5.9.1 “Windows Explorer (Windows Gezgini)” ile aşağıdaki dizine gidiniz:

           <  Yerel_Dizin>:\InetPub\WWWRoot\bin\.

           5.9.2 Buradaki “Web.config” dosyasına çift tıklayın.

           5.9.3 Web.config dosyası içerisinde < SafeControls> node’unu arayınız.

           5.9.4 < SafeControls> node’u altındaki listede şu anda üzerinde çalışıyor olduğunuz WebPart’ın kayıtlı olup olmadığını kontrol edin. Eğer listede üzerinde çalışıyor olduğunuz WebPart yoksa onu bu listeye aşağıdaki şekilde eklemeniz gerekiyor:

           <  SafeControl Assembly="assembly_name, Version=assembly_version,
           Culture=assembly_culture, PublicKeyToken=assembly_public_key_token"
           Namespace="assembly_namespace" TypeName="*" Safe="True"/>

           5.9.5 Web.Config dosyasını kaydedin ve kapatın.

   6. Uzaktaki sunucuya, “remote debugging services (uzaktan hata ayıklama servisleri)” ni kurunuz. Kurulum ile ilgili detaylı bilgiyi msdn sitesindeki şu adresten öğrenebilirsiniz: Visual Studio: Setting Up Remote Debugging.

Not : Hata ayıklama sırasında “Unable to replace file_name.dll after compilation.” Şeklinde bir hata alırsanız, ASP.NET w3wp.exe presesini sonlandırıp, projenizi “build” ederek, hata ayıklama işlemini tekrar başlatmanız gerekmektedir.

Sonuç

Windows SharePoint Portal’leri üzerinde kullandığımız WebPart’lar aslında birer ASP.NET sunucu kontrolleridir. Bu nedenle, WebPart’lardaki hataları ayıklamak için ASP.NET kontrollerindeki hataları ayıklamak için kullandığımız tüm yöntemleri kullanabiliriz.

Kaynak: msdn.microsoft.com