Kategoriler


SON YORUMLAR
mehmet uluğ
bu makalemsi makale! şaka olmalı:)
sevda
beğendim
Reyting Amca
Sitenin reytingi düştü. Google.da aratınca arkalarda çıkıyor. Eskiden ilk sırada çıkardı. Site sahibi ateşli yazılar yazmıyor 1-2 yıldır...
Seda
web sitesi, masa üstü uygulamaları, muhasebe, restaurant, otel, barkot sistemleri yazılımı yapılır. adres:s.sedaerden@gmail.com
Hafize
Yazılım ödevleri ve web sitesi yapılır.Bilgi için hafizearduc@hotmail.com
Gamze
C#, C++, ASP.NET-MVC, HTML-CSS, Matlab, Arduino ödevleri yapılır. Bilgi için; gamze.zirh@gmail.com
Eyüp yılmaz
merve seni seviıyorum asl bebeyoö
BEYZADE BOZTEPE
18 Yaşındayım ınstagram=beyzadebztp
Eyüp yılmaz
39 yasındayım coderım hackerıım ıp verın modemınıze vurayım
BEYZADE BOZTEPE
18 Yaşındayım ınstagram=beyzadebztp (çıkın çıkın gelin GIZLARRRRR)
BEYZADE BOZTEPE
EYVALLAH BENDE İYİYİM
BEYZADE BOZTEPE
İYİYİM GEZEGEN SEN NASILSIN
Eyüp yılmmaz
17 yasındayım kız talıplerımı beklıyom ınsatgram= eyup.yılmaz3
BEYZADE BOZTEPE
MERHABA DÜNYA

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
ASP.NET ve ASP Session Paylaşımı
Şehir dışında okumak
PHP Geliştirme Ortamı - Zend Studio
Oracle - Clustering Faktor(CF) nedir?
Evinizde ADSL Üzerinden Web Hosting Hizmeti Nasıl Verilir
2008 CPU TURKEY YARIŞMASI SONUÇLANDI!
STORED PROCEDURE'LERE NİÇİN İHTİYAÇ DUYARIZ?
Dünya Genelinde İnsanları Üç gruba Ayırıyorlar
İTURO 2008 Microsoft Robotics Studio Finalisti Üniversiteler
IP SINIFLARI
Von Neumann mimarisi
Database programlama...
Windows Workflow Foundation State Machine
Oracle - Indexler Hakkında detaylı bilgi
İSTANBUL İSTANBUL İSTANBUL
Oracle - SQL Trace ve TKPROF nedir, nasıl kullanılır?
Yazılım Ekibi Büyüklüğü
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?

Bilgisayar Mühendisleri Portalı

ASP.NET ve ASP Session Paylaşımı

ASP.NET ve ASP Session Paylaşımı
 
 

Merhaba,

Bu makalemizde sizlere ASP(Active Server Pages) ve ASP.NET arasında Session nesnesinin nasıl paylaşılacağını ve bu Session değişkenlerinin ASP dosyalarından ASPX dosyalarına nasıl aktarılacağını anlatmaya çalışacağım.

Makalemize başlamadan önce ASP ve ASP.NET uygulamaları arasında Session nesnesinin paylaşımının dayandığı temel prensipleri tekrar gözden geçirmemizin faydalı olacağını düşünüyorum. Bu temel prensipler,

  • ASP ve ASP.NET Session nesneleri paylaşılabilir değildir. (Problemimizin temel kaynağı da zaten budur) 
  • Session değişkenlerinin aktarımı her iki yönde de yapılabilir. ASP'den ASP.NET'e yada ASP.NET'ten ASP'ye. 
  • Session nesnesi içerisinde çok önemli bilgilerin saklanabileceği göz önünde bulundurulduğunda, ASP/ASPX Session aktarımın yapıldığı uygulamaların yada çözüm yollarının oldukça güvenli olmaları gerekir. 
Büyük boyutta görmek için tıklayın


Şunu du hatırlatmakta yarar var ASP ile ASP.NET arasındaki bu session aktarımı farklı şekillerde de olabilir. örneğin bu problemin çözümü için bir veritabanı uygulaması da düşünülebilir. Bu çözüm yolunda da ASP ve ASPX dosyaları arasında geçiş(her iki yönde de) yapılacağı zaman bir ara dosya Session değişkenlerini alarak veritabanına bir GUID (Globally Unique ID) ile kaydeder ve yönlendirilen bir sayfa da veritabanından bu değişkenleri alarak kendi Session nesnesi içerisine kaydeder ve bu şekilde aktarım gerçekleştirilir.

Bu iki yöntemi karşılaştıracak olursak veritabanı kullanılan çözüm yolunun daha iyi olduğunu söyleyebilirim. Birinci neden bu yöntemin daha güvenli olmasıdır. İkincisi ise, burada ele alacağımız çözüm yolunda yalnızca ASP 'den ASP.NET 'e Session değişkenlerinin aktarımı yapılabilir. Başka bir deyişle, burada anlatılacak olan çözüm yolunda bu aktarım çift yönlü yapılamaz. Bunun nedeni de ASP.NET 'te herhangi bir formu POST edeceğimiz sayfayı belirleyemiyor oluşumuzdur. ASP.NET 'te her sayfa yine kendisine bilgilerini POST eder. (Postback) 

Makalemizin temel noktasına geri dönelim. Bu örneğimizde bir ASP dosyasından bir ASPX dosyasına Session değişkenlerimizi aktaracağız, basit bir form ile ASP dosyamızdan form değerlerimizi POST ettikten sonra session nesnemize bu değerleri aktarıp bir ASPX dosyasına bu değerleri transfer edeceğiz. Bu kapsamda kullanacağımız dosyalar ve temel görevleri aşağıdaki gibidir :

Login.asp : Yukarıda da ekran görüntüsünü gördüğünüz, default giriş sayfamız. Kullanıcılar bu sayfa üzerindeki form bilgilerini girdikten sonra bu değerleri "gönder" düğmesi ile sunucuya POST edecek.

Session_transfer.asp : Login.asp sayfamızın form değerlerini POST edeceği ve bu değerlerin Session değişkenlerimize aktarılacağı sayfamız. Bu kısımda dikkatinizi bir noktaya çekmek istiyorum. Dosya içerisinde yorum olarak belirttim bu konuyu ama gözden kaçmaması için burada da değinelim. Normalde kullanıcı giriş bilgileri (kullanıcı adı, şifre) onaylandiktan sonra Session değişkenlerinin güncellenmesi gerekir ancak bahsettiğimiz onaylama işlemi bu makalemizin konusundan uzak olduğu için biz bu bilgilerin doğru olduğunu varsayıyoruz ve girilen bilgileri hiçbir kontrol mekanizmasından geçirmeden Session değişkenlerimize aktarıyoruz.

Şimdi bu dosyamızın içerdiği koda bir göz atalım.

<%
' öncelikle form değişkenlerimizi Session
' nesnemize aktaralım. Bu bölümün
' esasen bu dosya içerisinde yapılmaması 
' gerekir. Bu işlemin olağan hali,
' kullanıcının login bilgilerinin doğruluğu 
' onaylandıktan sonra Session değişkenlerinin
' güncellenmesidir.

Session("Name") = Request.Form("Name")
Session("Surname") = Request.Form("Surname")
Session("Website") = Request.Form("Website")
Session("Username") = Request.Form("Username")
Session("Password") = Request.Form("Password")

' Tüm session değişkenlerini bir form 
' içerisine alıp ilgili ASPX sayfamıza
' değerleri POST ediyoruz...

Response.Write("<form name=test id=test action" 
Response.Write("=Session_transfer.aspx method=post >")
For each Item in Session.Contents
  Response.Write("<input type=hidden name=" & Item)
  Response.Write( " value=" & Session.Contents(item) & " >")
next
Response.Write("</FORM>")
Response.Write("<script>test.submit();</script>")
%>


Şimdi burada ne yapıldığını anlatmaya çalışalım. öncelikle form değişkenleri Session değişkenlerine aktarılıyor. Ardından bir form ile bu session değişkenleri alınarak oluşturulan bir form'a gizli form değerleri olarak aktarıldıktan sonra oluşturulan bu form JavaScript ile otomatik olarak az sonra üzerinde duracağımız "Session_transfer.aspx" dosyasına POST ediliyor.

Session_transfer.aspx : Bu ASPX dosyasımızın işlevi ise, kendisine POST edilen form değişkenlerini alarak bu değişkenleri ASP.NET Session nesnesi içerisinde belirtilen ad ve değer ile aktarmak. Şimdi de bu sayfamızın koduna (Page_Load Event) bir göz atalım...

private void Page_Load(object sender, System.EventArgs e)
{
  for(int i=0;i<Request.Form.Count;i++)
  {
    Response.Write(Request.Form.GetKey(i));
    Session[Request.Form.GetKey(i)]=Request.Form[i].ToString();
  }
  Response.Redirect(Session["RedirectPage"].ToString());
}


Sayfa kendisine POST edilen form değişkenlerini(bu işlemi yukarıda belirttiğim gibi Session_transfer.asp içerisinde yapıyoruz) bir döngü içerisinde ASP.NET Session değişkenlerine aktarıyor. Bu işlemin ardından sayfa yine kendisine form aracılığı ile aktarılan ve ASP-ASPX arasında Session değişkenlerinin doğru aktarılıp aktarılmadığını gösteren bir sayfaya yönlendiriliyor. (Bu sayfa login.asp dosyamız içerisinde belirtilmiştir)

LoginInfo.aspx : Az önce de belirttiğim gibi Session değerlerinin doğru aktarılıp aktarılmadığını kontrol etmek amacıyla hazırlanmış olan sayfamız. Bu sayfamızın kodu (Page_Load Event) ise :

private void Page_Load(object sender, System.EventArgs e)
{
  if(Session["Name"]!=null)
    lblName.Text = Session["Name"].ToString();
  if(Session["Surname"]!=null)
    lblSurname.Text = Session["Surname"].ToString();
  if(Session["Website"]!=null)
    lblWebsite.Text = Session["Website"].ToString();
  if(Session["Username"]!=null)
    lblUsername.Text = Session["Username"].ToString();
  if(Session["Password"]!=null)
    lblPass.Text = Session["Password"].ToString();
}

Gördüğünüz gibi basit olarak ASP dosyasından aktardığımız Session değişkenlerini alarak kullanıcıya gösteriyor. Bu örnek için bu sayfamızın ekran çıktısı ise aşağıdaki gibidir :

Büyük boyutta görmek için tıklayın



Basit ama bana göre oldukça mühim bir konuyu bu makale ile sizlere aktarmaya çalıştım. İşinize yarayacağına eminim. Umarım beğenmişsinizdir.

 
 Kaynak kodu indir
Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın

Hakan(01.06.2012 21:51:36)
sanırım kaynak kodlar silinmiş nereden bulabiliriz çok önemli bir konu bence
%100 %0 %0
Katılıyorum Çekimserim Katılmıyorum



cheer(27.05.2009 16:23:48)
çok guzel anlatmışsını, yalnız ben asp.net'te bir formdaki bilgileri başka bir aspx sayfasına göndermek istiyorum bunu nasıl yapabilirim?

iyi çalışmalar...
%67 %17 %17
Katılıyorum Çekimserim Katılmıyorum






Copyright© 2001-2017. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.