Başlangıç > .NET, ASP.NET, GÜNLÜK, NASIL? > ASP.NET MEMBERSHIP ve LOGIN SORUNSALI

ASP.NET MEMBERSHIP ve LOGIN SORUNSALI

aspnet.pngUzun zamandan beri fırsat bulup da bir türlü kullanamadığım ASP.NET Login kontrollerini bu sabah 7:30 gibi denemeye karar verdim. Hevesle bilgisayarın başına oturup elimdeki kaynakalardan bir kaç örnek inceledikten sonra uygulama yapma vaktinin geldiğini düşünerek ilk uygulama için kolları sıvadım.

Öncelikle web.config içinde gerekli değişiklikleri yapmam gerekiyordu. Bunun için araç çubuğundan Website->ASP.NET Configuration yolunu izledim. Hepimizin alışkın olduğu Webadmin arayüzüne , buradan da Security sekmesine geçip ayarları yapacaktım ki… Beni  dünyalar güzeli bu hata mesajı karşıladı:

There is a problem with your selected data store. This can be caused
by an invalid server name or credentials, or by insufficient
permission. It can also be caused by the role manager feature not being
enabled. Click the button below to be redirected to a page where you
can choose a new data store
.

Yazının bundan sonrasını dikkatli okumanızı öneriyorum. Bu sorunu çözmek için uğraşırken öğrendiğim şeyleri de paylaşıyor olacağım.

Belli ki Webadmin gerekli veritabanına ulaşamıyordu. Eğer ulaşsaydı burada tanımlayacağım ilgili kuralları veritabanına aktaracaktı yada veritabanında hali hazırda bulunanları bana gösterecekti. ASP.NET ile gelen çoğu API ‘nın (Roles , profile vb.) default olarak SQL SERVER 2005 EXPRESS EDITION ile çalıştığını biliyorum. Fakat ben kuruluma bunu dahil etmeyip ayrıca kullandığım SQL SERVER 2005 DEVELOPER EDITION ile uygulamalarımı geliştiriyorum. Demekki bir yerlerde bu bağlantıyla ilgili ayarlar olmalı . (Hard coded olacak değil ya)

C:\WINDOWS\Microsoft.NET\Framework\v2.0.xxx dizinine gittim. Zaten bir haftadır sürekli bu dizine gidiyorum 🙂 ve ASP.NET ile uygulama geliştirecek arkadaşlara burayı dikkatlice incelemelerini öneriyorum. Mesela Webadmin dediğimiz arayüze ait dosyalar burada. Yada Asp.net ‘in ilgili yerlere kaydının yapılması için gerekli reg_xxx araçları da burada. Yukarıdaki hata mesajından sonra asp.net_regsql aracını kullanmamı söyleyen bir ekranla da karşılaşmıştım.

Hemen bu aracı çalıştırdım. (Neye yaradığını biliyorum ama size anlatmak için gene de yazıyorum 🙂 ) Bu araç ASP.NET 2.0 ile gelen ve bahsi geçen API ‘ları kullanabilmek için belirteceğiniz veri kaynağında kendisi için gerekli veritabanı, tablo , trigger , stored proc. gibi bileşenleri oluşturuyor. Bunları oluştururken kullandığı SQL komutlarını yine bulunduğunuz dizin içerisinde görebilirsiniz. Hem oluşturmak hem de silmek için gerekli tüm komutlar C:\WINDOWS\Microsoft.NET\Framework\v2.0.xxx dizininde mevcut. (Çalıştığınız yerdeki DBA pürüz yaparsa bu dosyaları ona  gösterirmeniz gerekebilir).

Yeri gelmişken bir konuya daha değinmek istiyorum. Aslında Login kontrollerinin pek de tercih edilmemesinin altında yatan neden bu yani  veritabanı sunucunuzda kendince birşeyler oluşturmak ve kullanmak istemesi. Çoğu profesyonel uygulama geliştirici kontrolü elden bırakmamak adına bu hazır API ‘lardan kaçınıyor. Ama bir gerçek varki o da bu yardımcı uygulamalar sayesinde işlerin hızlıca halledilebildiği.

Asp.net_regsql aracını çalıştırdıktan sonra veritabanı sunucunuza bağlanabilmek için gerekli bilgileri vermeniz ve next diyerek olayı halletmeniz mümkün. Bu noktada bilmeniz gereken çok da birşey yok. Ama işlemleri doğrudan SQL dosyalarını kullanarak yapmak istiyorum diyorsanız (Benim gibi anti-wizard biriyseniz yani) bu noktada sıralamaya dikkat etmelisiniz. Bunun için de dosyalarda yerlana yorum satırlarını dikkatlice okumalısınız. İşlemlerin sonucunda aspnetdb ve ASPSTATE adlı 2 yeni veritabanımız oluyor. Gerekli veritabanları da hazır . Şimdi bağlantı olayını da hallettik mi herşey tamamdır.

Yukarıdaki hata mesajında bahsi geçen  butona tıklayınca MemberShip Provider gibi şeylerin geçtiği bir yazı karşıladı beni. Sonra da daha önce ISS MANAGER ‘da görüp de “nedir bunlar” diye düşündüğüm MemberShip Provider alanları geldi aklıma ve ISS MANAGER ‘ı çalıştırdım. Zaten çözüme gitmemdeki en büyük adım da bu oldu. ISS MANAGER içinde gezinirken gözüme çarpan diğer birşey de data source=.\SQLEXPRESS;IntegratedSecurity=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true ifadesi oldu. Bu yazıyı görünce anladım ki uygulamamda App_Data dizininde aspnetdb.mdf dosyası aranıyordu ve buna bağlanılmaya çalışılıyordu. Bu ayarı kendi veritabanı sunucum için gerekli Connection String ile değiştirerek sorunu çözmüş oldum. Her ne kadar ben bunu ISS MANAGER kullanarak yapmış da olsam , sizler doğrudan web.config içine aşağıdaki bloğu ekleyerek sorununuzu çözebilirsiniz:

<connectionStrings>
   <
remove name=LocalSqlServer/>
   <
add name=LocalSqlServer connectionString=” GEREKLİ CONNECTION STRING BURAYA”  providerName=System.Data.SqlClient/>
</
connectionStrings>


Yukarıda yaklaşık 2 saat önce yaşadıklarım yer alıyor. Burada önemli olan sorunu çözmeye çalışırken ne öğrendiğim. Öncelikle ASP.NET configuration (Webadmin) denilen araç sadece web.config dosyası ile çalışabilmek için gerekli arayüzü sunuyor. Kendiniz de aynı işlemleri doğrudan web.config dosyasını düzenleyerek yapabilirsiniz. Bu araç çalışma sırasında gerekli bilgileri uygulamanızın web.config dosyasından ve bilgisayarınızdaki machine config dosyasından okuyor.
IIS Manager dediğimiz araç da yine web uygulamanız için gerekli ayarları yaparak,  bu ayarları ya uygulamanın web.config dosyaysına yada sistemimizin genel machine.config dosyasına yazar. IIS Manager ‘da Properties ->ASP.NET yolunu izlerseniz karşınıza çıkan EDIT GLOBAL CONFIGURATION (Sadece default web site için aktiftir) ile ISS üzerinden yayınlanan tüm sitelerde geçerli olacak ayarları yapıp machine.config ‘e kaydederken Edit Configuration ile de seçmiş olduğunuz site için gerekli ayarları yapıp o sitenin web.config dosyasına kaydedersiniz.

Şimdilik benden bu kadar. Umarım faydalı bir yazı olur ve bu hata mesajı ile arama yapıp bloguma gelenlerin sorununu çözer. Bugün saat 15:00 ‘da nedirtv tarafından düzenlenen ASP.NET AJAX seminerinde olacağım. Seminer notlarımı da fırsat bulunca blogumda paylaşacağım. Bir sonraki yazıya kadar sağlıcakla kalın…

Reklamlar
Kategoriler:.NET, ASP.NET, GÜNLÜK, NASIL?
  1. Fatih
    Temmuz 31, 2007, 10:09 pm

    Hocam aynı hatayı bende anlatıyorum fakat ben hala düzeltemedim. Tüm dediklerinizi uyguladım fakat yine olmuyor.

  2. web.doktor
    Mart 25, 2008, 5:27 pm

    teşekkürler çok yararlı bir döküman..

  3. Erdem ÖZDEMİR
    Mayıs 7, 2009, 10:46 am

    Çok yararlı bir bilgi. Teşekkürler

  4. Mayıs 8, 2011, 11:44 am

    Gerçekten faydalı bir anlatım olmuş Teşekküürler

  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: