İlk asp.net uygulamamı geliştirmeye başladığımda login nesnelerini görünce asp yazarken uğraştığım gibi uğraşmayayım diye kullanmak istemiştim ama zaten bir veritabanım vardı sql'de ve onu kullanmak istiyordum. Nasıl ayarlayacağımı ararken çözümü yine www.asp.net sitesinde buldum. Bir de ben yazayım dedim, aşağıda adım adım nasıl yapılacağını bulabilirsiniz.
Peki bu asp.net 2.0 servisleri nedir, neleri kapsar?
Üyelerin kullanıcı adı/şifre ve diğer detaylarının saklanıp yönetilmesine yarayan, haklarının ayarlanıp kullanılmasını sağlayan membership api, kullanıcı rollerinin ayarlandığı role api, siteyi ziyaret eden anonim ya da kayıtlı kullanıcıların bazı detaylarının takip edilebilindiği profile api, web parts gibi uyarlanabilir kontrollerin ayarlarının yönetildiği personalization api, site hiyerarşisinin yönetimi ve kontroller ile kullanılmasını sağlayan site navigation api ve sitenin durumu ve oluşan hataları hakkında da health monitoring api asp.net 2.0 servisleri kapsamıdır.
Eğer veritabanınızı bir dosya olarak saklayıp kullanmak istiyor, sql server üzerinde tutmayı planlamıyor ve/veya kullanmak istediğiniz bir veritabanınız yoksa, sizin için bir tane yaratılıyor ancak aksi durumlarda istediğiniz koşullara göre bu değişkenleri ayarlamanız gerekiyor.
SQL server üzerinde zaten varolan veritabanınızı ya da yeni yaratacağınız veritabanını ayarlamak için aşağıdaki adımları izlemelisiniz.
1. Eğer veritabanınız yoksa boş bir veritabanı yaratın, varsa ikinci adıma geçin.
2. C:\Windows\Microsoft.NET\Framework\V2.0 ile başlayan bir dizin var bilgisayrınızda onun içindeki aspnet_regsql.exe komutunu çalıştırın ve adımları aşağıdaki resimlerdeki gibi takip edin.
Bu adımlarla sql veritabanımızı hazırlamış oluyoruz. Şimdi asp.net uygulamamızı bu sql veritabanını kullanacak şekilde ayarlamalıyız.
Visual studio ya da notepad gibi bir editör aracılığıyla uygulamanın kök klasöründeki web.config dosyasının içindeki <configuration> düğümünün altına gerekli satırları ekliyoruz, bunu yaptığımızda aşağıdaki gibi bir görüntü çıkacak ortaya.
<connectionStrings>
<clear/>
<add name="BaseSQL" connectionString="Data Source=zokkanlaplup\sqlexpress;Initial Catalog=SinemaSeysi;user ID=sinemausr;password=deneme" providerName="System.Data.SqlClient"/>
</connectionStrings>
Artık istediğimiz sql veritabanını raatlıkla kullanabiliriz. Tabii role, membership, navigation, vb... gibi kontrol ve komutlar için başka ayarlar da gerekmektedir.
Membership Provider ayarları
Kendi tanımlayacağımız providerları kullanacağımız zaman öncelike sistem tarafından ön tanımlanmış diğer providerların silinmesini tavsiye ediyorum bu sebeple aşağıdaki kod örneklerinde <clear/> komutunu kullanacağız.
<membership defaultProvider="SinMembershipProvider">
<providers><
clear/>
<add name="SinMembershipProvider" connectionStringName="BaseSQL" applicationName="/"
type="System.Web.Security.SqlMembershipProvider" />
</providers>
</membership>
Yukarıdaki kodu system.web düğümünün altına yerleştirdiğimizde artık membership ayarlarımız, yukarıda tanımladığımız SQL veritabanından kullanılacak.
Role Provider ayarları
Membership ile aynı mantıkla yine system.web düğümünün altına aşağıdaki kodu koyduğumuzda, role ayarlarımız da hazırladığımız SQL veritabanından çalışıyor olacak.
<roleManager enabled="true" defaultProvider="SinRoleProvider">
<providers><
clear />
<add applicationName="/" connectionStringName="SinSQL" name="SinRoleProvider"
type="System.Web.Security.SqlRoleProvider" />
</providers>
</roleManager>
Bu arada eğer uygulamamız internette çalışacaksa aşağıdaki ayarları da yine system.web düğümünün altına yerleştirmemiz gerekmektedir.
<authentication mode="Forms" >
<forms loginUrl="login.aspx"
name=".aspnetauth" />
</authentication>
tabii login.aspx yerine ve .aspnetauth yerine dilediğimiz değişkenleri kullanabiliriz. Bir de son olarak eğer bu kodları elle yazıyorsanız en çok dikkat etmeniz gereken şey küçük - büyük harflerin tam doğru yazılmasıdır! Yoksa neden çalışmadığını arar durursunuz benim gibi :-)
Umarım yardımcı olabilmişimdir, iyi çalışmalar dilerim herkese.