C#nedir?com
 
YAZAR HAKKINDA
Ali Hıdımoğlu
Ali Hıdımoğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
7 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: altinda aslinda asp.net baglanti burada degeri enjekte kullanici membership projemizi varsayilan veritabani veritabanina veritabaninda web.config ASP.NET Ali Hıdımoğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : ASP.NET
Yayınlanma Tarihi : 11.6.2006
Okunma Sayısı : 25158
Yorum Sayısı : 5     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 7.3.2021
Turhal Temizer
Mac OS/X Removing CUDA 7.3.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 7.3.2021
Burak Selim Şenyurt
Docker Yerine Podman (Pod Manager) Kullanmak 7.3.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
ASP.NET 2.0 da Varsayılan Sağlayıcıyı Değiştirmek
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Gerek WebPart, gerek herhangi bir Membership componenti içeren bir proje olsun, gerek Personalizasyon(kişiselleştirme) içeren bir proje olsun gerekse WebEvents (web olayları – kullanıcı izleme)içeren bir projemiz olsun bu projeleri default(varsayılan) bir veritabanında tutmamız gerekicektir. Bu makalede projemizi nasıl istediğimiz bir veritabanına enjekte edeceğimize değineceğiz.

Basit olarak başlamak gerekirse elimizde Login yada Webpart componentleri eklenip kullanılabilinen bir proje var gibi düşünelim. Ve kendimize bir veritabanı seçelim ( mssql, mysql, oracle gibi ) Benim burada kullanacağım veritabanı ise Sql2000 olacak aslında Sql2005 e de çevirebilirdik fakat bu sadece bağlantı cümlemizle alakalı bir durum. Buna makalemizde değineceğiz.

Not: Eğer ki neden Access veritabanı kullanmıyoruz diye soracak olursanız Whidbeyin beta 1 inde .mdb ile yani Access ile bu işlem oluyordu fakat zaten beta 2 de .mdf yani SqlExpress desteği gelince buna gerek duyulmamış diye düşünüyorum çünkü Accesse entegre etmek için kullanılan tüm assembly yani kodlama tipleri final versiyonunda çıkartılmış. Ama şayet ilerde bununla ilgili bir şeye rastlarsam burada belirteceğimden emin olun.

Adım Adım Provider Ayarları 1. Boş bir veritabanı yaratalım. Sql2000 için basitçe ele alıyorum. Başlat>Tüm Programlar>Microsoft SQL Server>Enterprize Manager diyerek sunucumuza gelelim. Ve oradan yeni isimli bir veritabanı yaratalım.


2. Bu pencereyi kapatıp buradan çıkalım sonra Başlat>Çalıştır a şu yolu yazarak buradan devam edelim C:\WINDOWS\Microsoft.NET\Framework\ burada en son Framework sürümünü seçelim ve onun içerisindeki aspnet_regsql.exe yi çalıştıralım. Bu program sayesinde bizim varsayılan veritabanındaki dosyaları gösterdiğimiz veritabanına kopyalayacaktır. Evet, çalıştırdıysak devam edebiliriz.

3. İlk gelen ekranı Next(ileri) diyerek geçelim. Ve buradan Configure SQL Server seçeneğini seçip ilerleyelim.


4. Karşımıza çıkan ekranda serverımızın özelliklerini girelim.


5. Sonraki ekranları ileri diyerek geçebiliriz. Şimdi elimizde Asp.net in kişiselleştirme ya da profil tablolarını ve veritabanı ilişkilerini veritabanımıza enjekte etmiş bulunuyoruz.


6. Şimdi projemizi açalım ve Web.Config dosyasına girelim.


7. Projemizin öncelikle diğer veritabanının yolunu gösteren bir bağlantı cümlesine ihtiyacı var bunun için <connectionStrings> tagini ele alalım.

<connectionStrings>

      <add name="BaglantiIsmy" connectionString="BaglantiCumlesi" />

</connectionStrings>
Benim kullandığım bağlantı cümlesi yapısı şöyle :

Data Source=Server ismi;Initial Catalog=veritabanınızın ismi;User ID=sa;Password=varsa sa şifreniz

8. Sitemizde kullanacağımız özellikleri şimdi seçelim Asp.net 2.0 ile beraber gelen özellikler aşağıda listelenmiştir:

  • Membership : Üyelik yönetim APIsi.
  • Roles : Üyelendirme bazlı olarak üyelere verilen hakları temsil eden protokoldür. Bunun sayesinde erişim hakları düzenlenebilir.
  • Profile : Kişiselleştirme bu sayede üyelerimize belirttiğimiz özellikleri entegre edebiliriz. Aslında veritabanından farklı olarak kullanılan bir özelliktir fakat istenirse veritabanına da bağlanılabilir.
  • Web Part Kişiselleştirme : Webpartların ayarlarının her üyeye göre kişiselleşmesini sağlar yani her üyenin site üzerinde yaptığı ayarları otomatik kaydetmeye yarar.
  • Web Events : Yani web olayları, uygulamanın runtime’da aldığı aksiyonları loglanmasını(kaydedilmesini) ele alan frameworktür.
A. Öncelikle projemizde Membership ayarlarını ele alalım bu bizim Login componentlerini yani giriş bölümlerimizi kullanacağımız veritabanını belirler ToolBox(araç kutusu) dan Login sekmesi altındaki tüm componentler bizim belirttiğimiz sağlayıcıyı kullanacaktır. Bu ayarı yapmak için Web.Config dosyasındaki <system.web> sekmesinin içine girelim.

<membership defaultProvider="ProviderIsmi">
      <providers>
            <remove name="AspNetSqlProvider" />
            <add name="ProviderIsmi"
                  type="System.Web.Security.SqlMembershipProvider"
                  connectionStringName="BaglantiIsmi"
                  enablePasswordRetrieval="false"
                  enablePasswordReset="true"
                  requiresQuestionAndAnswer="true"
                  passwordFormat="Hashed"
                  applicationName="/" />
      </providers>
</membership>
Yönergelerimize bakalım:

  • name: Providerın(sağlayıcının) ismi
  • defaultProvider: Tanımlanmış bir sağlayıcının tüm sistemde varsayılan olarak kullanılmasını sağlar
  • type: Temel alınan sağlayıcının .dll’ini belirtir sabit bir değer. Kullanacağımız tipe göre değişiklik gösterebilir.
  • connectionStringName: Web.config de tanımlı bir bağlantı cümlesi.
  • applicationName: Hangi projede kullanılacaksa onun ismi. Bir veritabanında birden çok projenin bilgileri tutulabilir bu değeri girerseniz sağlayıcınız tanımladığınız projeye göre özelleşecektir.
  • passwordFormat: Veritabanında kullanılacak şifreleme. Varsayılan değer hash şifrelemedir.
  • enablePasswordRetrieval: Şifre geri isteme açık mı kapalı mı (true: açık. false: kapalı). Varsayılan değer açıktır.
  • enablePasswordReset: Şifreyi sıfırlamak açık mı kapalı mı? Varsayılan değeri açıktır.
  • requiresQuestionAndAnswer: Şifre geri istemede ve sıfırlamada gizli sorunun açık olup olmadığıdır. Varsayılan değeri açıktır.
  • requiresUniqueEmail: Veritabanımızda sadece tek e-mail mi olsun seçeneği yani aynı e-maille kimse kayıt olsun mu olmasın mı? Varsayılan değeri açık.
  • maxInvalidPasswordAttempts: Şifre ve kullanıcı adının kaç defa yanlış girilebileceğini burada belirtebilirsiniz. Eğer kullanıcı bu değeri aşarsa otomatikman o kullanıcının hesabı kilitlenir. Varsayılan değeri 5.
  • passwordAttemptWindows: Eğer bir kullanıcı bloklanmışsa onu açmak için kaç dakika bekleyeceğini ayarlamanızı sağlar. Varsayılan değer 10 dakikadır.
  • commandTimeout: Select, Insert gibi bağlantı cümlelerinin veritabanında kaç sn süreyle kalacağını ayarlayan bölüm. Varsayılan 30 sn.
  • description: Yarattığımız sağlayıcının açıklaması isteğe bağlı bir bölüm.
Evet, özellikleri istediğiniz şekilde belitmişseniz aslında ne kadar uzun kodlarla yaptığımız şeyleri 2 satırda dilegetirdiğimizi farketmiş olacaksınız. (kullanıcı kilitleme şifre geri isteme gibi)

Not: Aslında buraya kadar aldığımız yapı sabir bir yapı sadece tip değişkenini değiştirerek diğer özellikler için de aynı <providers> sekmesini kopyalayabilirsiniz.

B. Rol yönetimi bu özelliği aktiflemezsek veritabanımızdaki üyelerin derecelendirme(Role) tablosu ile arasındaki ilişkiyi kulanamayız( Bknz: en alttaki ilişkilendirme tablosu ). Eklemek için yine <system.web> altında:

<roleManager enabled="true" defaultProvider="ProviderIsmi">
   <providers>
    <add 
    connectionStringName="BaglantiIsmi" 
    name="ProviderIsmi" 
    type="System.Web.Security.SqlRoleProvider" />
   </providers>
</roleManager>
Gördüğünüz gibi değiştirdiğimiz 2 şey var <roleManager> altında yani rol değişikliği altında bir sağlayıcı tanımlıyoruz bu aynı bağlantı cümlesini alıyor tek farklı değişken tipi.

C. Profil ayarlarımızı da veritabanımızda saklayabiliyoruz. Veritabanımızda özelliğin ismi(PropertyName), değeri(Value) ve son güncellenme tarihi(LastUpdatedDate) tutulmakta. Profil sağlayıcıları için yapılan değişiklik ana sekmentimiz <system.web> altında <profile> altında tanımlayacağız :

<profile>
      <providers>
          <add name="ProviderIsmy"
                   type="System.Web.Profile.SqlProfileProvider"
                   connectionStringName="BaglantiIsmi"
            />
      </providers>
</profile>
D. WebPartlarımızın kişiselleştirilmesini kullanıcının sitede yaptığı her değişikliğinin kaydedilmesi ve en son girdiğinde yine yaptığı son ayarla girmesi gibi değerlerin tutulmasını sağlamak için kullanırız(örnk: http://my.msn.com/). Bunun için yapmamız gereken ayar ise yine <system.web> altında şunları ele almak:

<webParts>
      <personalization defaultProvider="ProviderIsmi">
            <providers>
                  <add 
                name="ProviderIsmi"          
                type="System.Web.UI.WebControls.WebParts.
                    SqlPersonalizationProvider"
                connectionStringName="BaglantiIsmi"
                   />
           </providers>
      </personalization>
</webParts>
Evet, bu kadar yaptığımız şey dikkatinizi çekmiştir sadece tip ve ana sekmentimizi değiştirmek oldu. Şimdi sitemizde olan tüm WebPartlar belirtilen kullanıcıya göre veritabanında depolanacaktır.

E. Events yani olayların da (sayfa açılması kapanması, ne zaman açılmış, kim ne açmış, .. gibi) veritabanında depolanmasını istersek eğer ona uygun da sağlayıcı(provider) yazabiliyoruz bunun için ilgili Event(olayın) Web.Config deki sekmentinin altına <provider> sekmentimizi eklemeliyiz :

<providers>
      <add name="ProviderIsmi"
            type="System.Web.Management.
            SqlWebEventProvider,System.Web"
            connectionStringName="BaglantiIsmi"
            maxEventDetailsLength="1073741823"
       />
</providers>
Not: Burada maxEventDetailsLenght olayın açıklamasının maximum boyutunu ifade etmektedir.

Bu makalede Asp.net in belirli bir veritabanına bağlı olmadığına değindik ve projemizi farklı bir veritabanında çalıştırdık. Bu işlem büyük projeler için veritabanımızı daha güçlendirmemizi sağlar. Yada projemizi eğer küçükse öyle ağır veritabanından kurtarıp küçük bir veritabanına de enjekte etmemizi sağlayacaktır.

Tablo ilişkileri diagramı :


Ek dosyada bu konuyla ilgili Asp.net 2.0 Membership kullanan düzenlenmiş bir küçük bir proje vardır. Birazda araştırmanız için sql veritabanımıza koyduğumuz tablolar ve ilişkilerin bulunduğu küçük bir access dosyasıda ekte yer almaktadır.

Unutmayın "Çalışan program mutlu programcı demektir". Bu makalenin yazımında destek veren tüm arkadaşlarıma teşekkürlerimi sunarım.

İyi .net ler dileğiyle.
Ali Hıdımoğlu

Makale:
ASP.NET 2.0 da Varsayılan Sağlayıcıyı Değiştirmek ASP.NET Ali Hıdımoğlu
  • Yazılan Yorumlar
  • Yorum Yaz
KAS
8
2010
bilgi için çok teşekkür ederim.
NİS
28
2007
Makale gercekten anlasilir ve yarayisli. Tesekkurler...
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor