Önce DCOM componentimizi COM componentinde olduğu gibi projemize dahil edelim.
Solution Exploerer dan Reference üzerine sağ tıklayıp Add Reference seçeneğini tıklayalım.

Açıklan Add Reference Menüsünden Aşağıdaki adımları izleyelim :
1. COM Sekmesine tıklayın
2. Listeden DCOM componentimizi bulup seçeleim
3. Select tuşuna basarak seçtiğimiz componentim Selected Component penceresine geçmesini sağlayalım
4. Ok deyip projemize geri dönelim

Solution Exploerer a tekrar baktığımızda Componentimizin Reference bölümüne eklendiğini görüyoruz.

Artık componentimizin instance'ını yarattıp dilediğimiz kullanabiliriz.
ESTPAYCOMLib.paymentClass myDCOM = new ESTPAYCOMLib.paymentClass();
Projemizi Çalıştırdığımızda bizi "Access Denied" içerikli bir hata mesajı karşılayabilir. Bunun nedeni DCOM componentlerinin aslında başka bir makinede host edilen asıl COM+ component'ine ulaşmamızı sağlayan bir proxy durumunda olmasıdır.
Asıl COM+ componenti başka bir sunucuda bulunmaktadır ve DCOM componenti ise proxy bu asıl COM+ componentini tüm fonksiyonlarını kullanmamıza olanak tanır. Biz sonuçta DCOM u kullanırız fakat bütün işlemler sunucuda bulunan COM+ componentinde icra edilir.
Peki "Access Denied" hatası almamızın sebebi nedir ? ASPX uzantılı ASP.NET sayfaları sayfaları sistemde bulunan ASP.NET user ı tarafından çalıştırılmaktadır. ASP.NET user ına Full Control yetkisi verseniz dahi DCOM componentlerini oluşturup kullanmak için yeterli yetkiye sahip değildir.
Bu problemi aşmak için projemizin Web.Config dosyasını açıp şu satırları eklememiz yeterli olacaktır :
Bu XML satırı uygulamanın o anda kullanılan user'ının security ayarlarını windows authentication düzeyinde sağlar. Eğer o andaki kullanıcı yetkileri domain dışından gelecekse kodumuza username ve password özelliklerinide eklememiz gerekir.
Tüm bunların dışında hala DCOM component'leri oluşturmakta sorun yaşıyorsak Component Service ten DCOM componentin kullanabilecek userları atamamız gerekir. Bunun için Run dan dcomcnfg komutunu çalıştırdığımızda açılacak olan Component Service den ilgili DCOM componentini bulup sağ tıklyarak özelliklerine girilir.

Özelliklerde Security sekmesine tıklayın. Sırasıyla Launch Permission, Access Permision ve Configration Permission tablarından customize radio butonunu seçip Edit butonu ile DCOM componentini kullanacak kullanıcıları ekleyin, ve Allow yetkisi verin.

Bunların sonucunda DCOM componenetiniz sağlıklı bir şekilde çalışıyor olacaktır.
Hiç yorum yok:
Yorum Gönder