10 Mar 2008 System.DirectoryServices Sınıfı ile IIS’e Hükmedelim Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0 2 Yorum Merhaba arkadaşlar bu makalemiz de System.DirectoryServices sınıfını kullanarak IIS’de var olan bir site üzerinde virtual directory oluşturacağız.Eger bir servis saglayıcı isek iis üzerinde çok fazla degisiklik yapmak zorunda kalırız. Bazı durumlar da müsteriler virtual directory olusturma ihtiyacı duyabiliyor. Bunun için sürekli servis saglayıcı ile irtibat halinde olmaması ve is yükü çıkarmaması için kullanıcılara bir arayüz ile kendi virtual directory'lerini kendilerinin olusturmalarını saglayabiliriz. Iste bunun için .net framework bize System.DirectoryServices namespace'ni sunuyor. System.DirectoryServicesSystem.DirectoryServices(SDS), active directory gibi dizinlere programatik olarak erismeyi saglayan .net framework kütüphanesidir. Örnegin iis üzerinde açtıgımız bir web sitesi yada virtual directory'yi bu namespace ile programatik olarak kolayca yapabiliriz.Sınıfımız ile ön bilgiyi aldıktan sonra konu ile ilgili bir örnek yapalım. Ilk olarak iis üzerinde bir site açıp daha sonra da bu site üzerinde virtual directory açacagız.ÖrnekÖrnegimiz için yeni bir web site olusturalım. Daha sonra projemize semDirectoryServices.cs isimli yeni bir class ekleyelim. Bu class asagıdaki gibi olacaktır. Class'a geçmeden önce iis'i yapılandırmamızı saglayan iis metabase dosyasını inceleyelim.IIS Metabase DosyasıMetatabanı, birçok IIS (Internet Information Services) yapılandırma degeri için depodur. Metatabanı düz metinli bir .XML dosyasıdır ve el ile veya programla düzenlenebilir. Ayrıca metatabanı çok verimli sekilde genisletilebilir. IIS dagıtımınız büyüdükçe metatabanınız da büyür; bununla birlikte bir devralma modeli kullanarak, yinelenen degerlerin açıkça bildirimi engellenerek, yapılandırma degerlerinin metatabanından okunması gerektiginde olusan is yükü azaltılır. semDirectoryServices.cs usingSystem; usingSystem.DirectoryServices;publicclass semDirectoryServices{ private string metabase = "IIS://Localhost/W3SVC"; //Kullanacagımız Metabase dosyası private string siteYolu; // Sitemizin bulunacagı yol private string siteID; // IIS Üzerinde sitemizin alacagı benzersiz ID private string siteAdi; // IIS üzerinde sitemize erisecegimiz isim public string SiteID { get { return siteID; } set { siteID = value; } } public string SiteAdi { get { return siteAdi; }set { siteAdi = value; } } public string SiteYolu { get { return siteYolu; } set { siteYolu = value; } } public string SiteOlustur()// Bu fonksiyon ile IIS üzerinde bir site açacagız. { try { DirectoryEntry Servis = new DirectoryEntry(metabase); string className = Servis.SchemaClassName.ToString(); DirectoryEntries Siteler = Servis.Children; DirectoryEntry YeniSite = Siteler.Add(siteID, (className.Replace("Service", "Server"))); YeniSite.Properties["ServerComment"][0] = siteAdi;//Açılacak sitenin adı. YeniSite.CommitChanges(); DirectoryEntry YeniDizin; YeniDizin = YeniSite.Children.Add("Root", "IIsWebVirtualDir");//Root Dizine Yeni bir site ekliyoruz YeniDizin.Properties["Path"][0] = siteYolu; // Host edilecek sitenin yolunu belirliyoruz. YeniDizin.Properties["AccessScript"][0] = true; YeniDizin.CommitChanges(); DirectoryEntry path = new DirectoryEntry(metabase + "/" + siteID); PropertyValueCollection propValues = path.Properties["ServerBindings"]; path.Properties["ServerBindings"].Value = ":8080:"; // Sitenin çalısacagı baslantı noktasını belirliyoruz. path.CommitChanges(); return "Web Sitesi Basarıyla Olusturuldu !"; } catch (Exception Ex) { return "Bir Hata Meydana Geldi :" + Ex.Message; } } } Class ile isimiz simdilik bu kadar. Simdi kullanıcı ara yüzüne geçebiliriz. Formumuz üzerine;5 adet label,3 Textbox ve 1 Button ekleyelim.Benim hazırladıgım görüntü yukarıdaki gibidir. Simdi buton üzerine tıklayıp sitemizi olusturacak kodları yazalım. Button Click Eventi protected void btnSiteOlustur_Click(object sender, EventArgs e) { semDirectoryServices sds = new semDirectoryServices(); sds.SiteID = txtSiteID.Text; sds.SiteAdi = txtSiteAdi.Text; sds.SiteYolu = txtDosyaYolu.Text; lblUyari.Text = sds.SiteOlustur(); } Simdi yazdıgımız kodu test edelim.Evet, uyarı olarak basarıyla olusturuldu dedi ama emin olmak için ilk olarak iis'e gidip bakalım gerçekten de eklendi mi?IIS'de eklenmis JSimdi yazgelistir.com sitesi üzerinde sag tıklayarak göz at seçenegine tıklayalım. Gerçekten de çalısıyormus J Simdi bu siteye birde virtual directory ekleyelim. Bunun için Classs'ızın içine asagıdaki kodları ekleyelim. semDirectoryServices.cs - Ek publicstring VirtualDirectoryOlustur() { try { string vdMetabase = metabase + "/" + siteID + "/root"; DirectoryEntry site = new DirectoryEntry(vdMetabase); string className = site.SchemaClassName.ToString(); if ((className.EndsWith("Server")) || (className.EndsWith("VirtualDir"))) { DirectoryEntries vdirs = site.Children; DirectoryEntry YeniVirtualDirectory = vdirs.Add(siteAdi, (className.Replace("Service", "VirtualDir"))); //Sitemize virtual directory ekliyoruz YeniVirtualDirectory.Properties["Path"][0] = siteYolu; // Virtual directorynin host edilecegi dosya yolu YeniVirtualDirectory.Properties["AccessScript"][0] = true; YeniVirtualDirectory.Properties["AppFriendlyName"][0] = siteAdi; // Virtual directory adı YeniVirtualDirectory.Properties["AppIsolated"][0] = "1"; YeniVirtualDirectory.Properties["AppRoot"][0] = "/LM" + vdMetabase.Substring(vdMetabase.IndexOf("/", ("IIS://".Length))); YeniVirtualDirectory.CommitChanges(); } return "Virtual directory Basarıyla Olusturuldu !"; } catch { return "Bir Hata Meydana Geldi !"; } }Olusturdugumuz forma bir adet daha Button ekleyelim. Bu buton altında da daha önce olusturdugumuz siteye yeni bir virtual directory ekleyecegiz. vdOlustur Butonu Click Eventi protected void vdOlustur_Click(object sender, EventArgs e) { semDirectoryServices sds = new semDirectoryServices(); sds.SiteID = txtSiteID.Text; sds.SiteAdi = txtSiteAdi.Text; sds.SiteYolu = txtDosyaYolu.Text lblUyari.Text = sds.VirtualDirectoryOlustur(); } Hemen test edelim JEvet olusturuldu dedi ama birde iis'den bakalım.Iste budur JBu makalenin de sonuna geldik. Bir sonraki makale de görüsmek üzere. Iyi çalısmalar dilerimSem GöksuMCP | MCAD.NET |MCTSsem.goksu@yazilimgunlugu.com www.semgoksu.com | www.yazilimgunlugu.com Kaynaklarhttp://msdn.com
05 Şub 2008 ASP.NET Calendar Day Render Kategori: Yazılım Etiketler: ASP.NETASP.NET 2.0 3 Yorum Site de kullandıgım ASP.NET Calendar' da o günde yazı yoksa tıklanamıyor. Sevgili arkadasım Zeki Akdogan bunun nasıl yapıldıgını sordu. Bende herkes faydalansın diye siteye yazdım Iste cevabı :)protected voidcalendarSG_DayRender(object sender, DayRenderEventArgs e) { e.Cell.Controls.Clear(); if (Tarih = True) // Bu Tarihde Bi olay varmı ? { HyperLink hl = new HyperLink(); hl.Text = e.Day.Date.Day.ToString(); DateTime SelectedDate = e.Day.Date; hl.NavigateUrl = "Link.aspx?Gun=" + SelectedDate.Day.ToString() + "&Ay=" + SelectedDate.Month.ToString() + "&Yil=" + SelectedDate.Year.ToString(); hl.Font.Bold =true; e.Cell.Controls.Add(hl); } else { Label lbl = new Label(); lbl.Text = e.Day.Date.Day.ToString(); e.Cell.Controls.Add(lbl); } }
22 Oca 2008 Microsoft Virtual Earth Map - Makale 2 Kategori: Benden Etiketler: ASP.NETMicrosoft 2 Yorum Merhaba sevgili arkadaslar ilk makalemizde Virtual Earth Map'i ve kullanım alanlarını anlatıp basit bir örnek yapmıstık. Bu makale de ise Virtual Earth Map'in gelismis bazı özelliklerini inceleyecegiz.Microsoft Virtual Earth Map ile ilgili yazmıs oldugumuz 2. Makeleyi okumak için asagıdaki tıklayınız.
21 Oca 2008 Microsoft Virtual Earth Map ile Dünyayı Keşfedin – Makale 2 Kategori: ASP.NET Etiketler: ASP.NETMicrosoft 1 Yorum Merhaba sevgili arkadaşlar ilk makalemizde Virtual Earth Map’i ve kullanım alanlarını anlatıp basit bir örnek yapmıştık. Bu makale de ise Virtual Earth Map’in gelişmiş bazı özelliklerini inceleyeceğiz.Makelemizin 2. Bölümünde haritada gösterdigimiz koordinatın üzerinde o koordinatı belli edecek bir sekil kullanıcıya gösterecek ve bu koordinat hakkında kullanıcının o koordinatla ilgili önemli bilgileri görmesini saglayacak bir pencere açılmasını saglayacagız. VEShapeLayer.AddShape Metodu Virtual Earth Map'de Polygon, Polyline ve pushpin olmak üzere 3 çesit shape(sekil) vardır. Bu shape'ler yukardı da da belirttigimiz gibi haritamız üzerinde o koordinatı kullanıcıya gösterecek ve o koordinat hakkında kullanıcıya bilgi verecek. Not: Virtual Earth Map'in 5.0 versiyonu ile birlikte tüm shape nesneleri VEShape.Class altında birlesti. Haritalara Shape(Sekil) Eklemek Ilk olarak VELatLong nesesinin bir array'ı tanımlanır. Ben bu makale de konunun anlasılmasını zorlastırmamak için polygon Shape'ni kullanacagım. Polygon shape'nin kullanımında 3 koordinat tanımlamak zorundayız.var points = new Array( new VELatLong(45.01188,-111.06687, 0, VEAltitudeMode. RelativeToGround), new VELatLong(45.01534,-104.06324, 0, VEAltitudeMode. RelativeToGround), new VELatLong(41.01929,-104.06, 0, VEAltitudeMode. RelativeToGround), new VELatLong(41.003,-111.05878, 0, VEAltitudeMode. RelativeToGround)); Ikinci olarak Tipi Polygon olan bir VEShape nesnesi olusturulur. var myPolygon = new VEShape(VEShapeType.Polygon, points); Üçüncü olarak olusturdugumuz poligonu haritamıza ekleriz.var myPolygon = map.AddShape(myPolygon); Son olarak olusturdugumuz shape'de kullanıcıyı bilgilendirmek için çesitli bilgileri giriyoruz.myPolygon.SetTitle("Baslık");myPolygon.SetDescription("Koordinat ile ilgili Açıklama."); Evet basit olarak bir örnek yapalım; Ben örnegimde Fenerbahçe stadını haritamda gösterecek ve çesitli bilgilere yer verecegim. Shape.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Shape</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6"> </script> <script type="text/javascript"> var map = null; var gosterilecekKoordinat = new VELatLong(40.987835, 29.036629); var koordinatlar = new Array( new VELatLong(40.987835, 29.036629, 0, VEAltitudeMode. RelativeToGround), new VELatLong(40.987835, 29.036629, 0, VEAltitudeMode. RelativeToGround), new VELatLong(40.987835, 29.036629, 0, VEAltitudeMode. RelativeToGround), new VELatLong(40.987835, 29.036629, 0, VEAltitudeMode. RelativeToGround) ); function GetMap() { map = new VEMap('myMap'); map.LoadMap(gosterilecekKoordinat,16, VEMapStyle.Hybrid); var poligon = new VEShape(VEShapeType.Polyline, koordinatlar); map.AddShape(poligon); poligon.SetTitle("<center>Kadıköy - Fenerbahçe Sükrü Saraçoglu Stadı</center>"); //Shaepe için Koordinat ile ilgili baslık poligon.SetDescription("<br/><center><img src='fb.gif' align='center'><br/> Sükrü Saraçoglu Stadı <br/><br/> Burası Kadıköy burdan çıkıs yok !</center>"); //Shaepe için Koordinat ile ilgili tanıtım ve diger bilgiler } </script> </head> <body onload="GetMap();"> <div id='myMap' style="position:relative; width:640px; height:480px;"></div> </body> </html> Evet simdi örnegimizi çalıstıralım bakalım nasl bir sey olacak J Gerçekten çok güzel görünüyor J Türkiyenin ve avrupanın en güzel stadı ne de olsa J Evet arkadaslar orada ki kırmızı ataç'a benzeyen sey benim çok hosuma gitmedi, sizinde hosunuza gitmeyecegini varsayan Microsoft bunu asmak için bu iconu kendi belirleyecegimiz bir icon ile degistirmemize de imkan saglamıs. Makalemizin ikinci kısmında bu iconu kisisellestirecegiz. Bunun için aslında yukarıdaki örnekten çok farklı bir sey yapmayacagız. Sadece kullanacagımız VEShape nesnesinin SetCustomIcon ve SetIconAnchor özelligini kullanacagız. var customIcon = null; customIcon = new VEShape(VEShapeType.Polygon, koordinatlar); customIcon.SetTitle("12 Numara Hep Yanında ! "); customIcon.SetCustomIcon("<img src='fb.gif' alt=''/>"); //Kendi belirleyecegimiz Shape Iconu customIcon.SetDescription("<br/><center><img src='fb.gif' align='center'><br/> Sükrü Saraçoglu Stadı <br/><br/> Burası Kadıköy burdan çıkıs yok !</center>"); customIcon.SetIconAnchor(gosterilecekKoordinat); //Shape Iconun Gösterilecegi Koordinat map.AddShape(customIcon); Basit bir örnek daha yapalım. Ben yine Türkiye'nin ve Avrupa'nın en iyi stadının koordinatlarını alıp stadın tam üzerine FB logosu koyacagım J CustomIcon.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Adding a Shape to a Map</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> <script type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6"> </script> <script type="text/javascript"> var map = null; var customIcon = null; var gosterilecekKoordinat = new VELatLong(40.987835, 29.036629); var koordinatlar = new Array( new VELatLong(40.987835, 29.036629, 0, VEAltitudeMode. RelativeToGround), new VELatLong(40.987835, 29.036629, 0, VEAltitudeMode. RelativeToGround), new VELatLong(40.987835, 29.036629, 0, VEAltitudeMode. RelativeToGround), new VELatLong(40.987835, 29.036629, 0, VEAltitudeMode. RelativeToGround) ); function GetMap() { map = new VEMap('myMap'); map.LoadMap(gosterilecekKoordinat,16, VEMapStyle.Hybrid); customIcon = new VEShape(VEShapeType.Polygon, koordinatlar); customIcon.SetTitle("12 Numara Hep Yanında ! "); customIcon.SetCustomIcon("<img src='fb.gif' alt=''/>"); //Custom Icon'un Dosya Yolunu Belirtiyoruz. customIcon.SetDescription("<br/><center><img src='fb.gif' align='center'><br/> Sükrü Saraçoglu Stadı <br/><br/> Burası Kadıköy burdan çıkıs yok !</center>"); customIcon.SetIconAnchor(gosterilecekKoordinat); //Custom Iconun Gösterilecegi Koordinatı Belirliyoruz. map.AddShape(customIcon); //Custom Iconu Haritamıza Ekliyoruz. } </script> </head> <body onload="GetMap();"> <div id='myMap' style="position:relative; width:640px; height:480px;"></div> </body> </html> Bakalım nasıl bir sey ortaya çıkacak J Gerçekten çok güzel duruyor her ikisi de J Hem Microsoft, hem Fenerbahçe J Hem Virtual Earth, Hem de Kadıköy Fenerbahçe Sükrü Saraçoglu Stadı J Evet Arkadaslar, bu makalemizin de sonuna geldik. Baska bir makale de görüsmek dilegiyle, herkese basarılar dilerim. Sem Göksusem.goksu@yazilimgunlugu.com www.semgoksu.com | www.yazilimgunlugu.com Kaynaklar Virtual Earth Map SDK 6.0
03 Oca 2008 Microsoft Virtual Earth Map - Makale 1 Kategori: Benden Etiketler: ASP.NETMicrosoft 0 Yorum Google Earth'u ilk kullandıgım anda Microsoft'un neden böyle bir sey yapmadıgını düsünüp durmustum. Microsoft bu düsünceme benden daha çabuk cevap verdi ve Virtual Earth Map'i duyurdu. Sanırım buna en çok ben ve benim gibi Microsoft ürünlerini kullanmayı seven yazılımcı dostlar sevinmistir. Yazılımcılar için çok güzel bir SDK'si var. Konuyla ilgili yazmıs oldugum makaleyi okumak için tıklayınız