﻿
{"id":363,"date":"2012-04-02T00:09:22","date_gmt":"2012-04-02T00:09:22","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=363"},"modified":"2012-04-19T21:18:19","modified_gmt":"2012-04-19T21:18:19","slug":"asp-net-session-kullanimi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-session-kullanimi\/","title":{"rendered":"ASP.NET Session Kullan\u0131m\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Session&#8217;\u0131n kelime anlam\u0131 oturumdur.Her hangi bir ziyaret\u00e7i sitemize ilk girdi\u011fi anda, o ziyaret\u00e7iyle ilgili Session ba\u015flat\u0131lm\u0131\u015f olur.Ziyaret\u00e7imizle ilgili bir bilginin ba\u015fka bir sayfada elde edilmesini istiyorsak Sessionlar\u0131 kullanabiliriz.Server tarafl\u0131 \u00e7al\u0131\u015fan Sessionlar, bir sayfada ald\u0131klar\u0131 bilgileri di\u011fer sayfada kaybetmezler.Session de\u011ferlerini sayfalar aras\u0131nda ta\u015f\u0131mam\u0131za gerek yoktur.O bilgiler oturum aktif oldu\u011fu s\u00fcrece haf\u0131zada kal\u0131rlar.Ziyaret\u00e7i sayfalar\u0131m\u0131z\u0131 dola\u015f\u0131rken olu\u015fturulan Session nesnesi, ya bizim belirleyece\u011fimiz ya da \u00f6nceden sunucu taraf\u0131ndan belirlenen zaman a\u015f\u0131l\u0131nca sona erer.<br \/>\n<!--more--><br \/>\n\u015eimdi Default.aspx ve Deneme.aspx ad\u0131nda iki sayfa haz\u0131rlayal\u0131m.Default.aspx sayfas\u0131nda birer TextBox ve Button nesneleri olsun.Button nesnesine t\u0131kland\u0131\u011f\u0131 zaman TextBox&#8217;a yaz\u0131lan de\u011fer, olu\u015fturulacak Session nesnesine aktar\u0131ls\u0131n ve Deneme.aspx sayfas\u0131nda Session&#8217;a yaz\u0131lan bu de\u011feri okuyal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Default.aspx---\r\n    protected void Button1_Click(object sender, EventArgs e)\r\n    {\r\n        Session.Add(&quot;Deger&quot;, TextBox1.Text);\r\n    }\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Deneme.aspx---\r\n    protected void Page_Load(object sender, EventArgs e)\r\n    {\r\n        Response.Write(Session&#x5B;&quot;Deger&quot;].ToString());\r\n    }\r\n<\/pre>\n<p>E\u011fer TextBox&#8217;\u0131m\u0131za &#8220;Gen\u00e7ay&#8221; de\u011ferini girip Button nesnemize t\u0131klarsak, ard\u0131ndan Deneme.aspx sayfas\u0131n\u0131 a\u00e7arsak kar\u015f\u0131m\u0131zda &#8220;Gen\u00e7ay&#8221; yazd\u0131\u011f\u0131n\u0131 g\u00f6rece\u011fiz.Default.aspx ve Deneme.aspx sayfalar\u0131 aras\u0131nda bir veri ta\u015f\u0131mas\u0131nda u\u011fra\u015fmad\u0131\u011f\u0131m\u0131z halde Session nesnesi TextBox&#8217;a girilen de\u011feri ta\u015f\u0131mam\u0131za yard\u0131mc\u0131 oldu.<br \/>\n\u015eimdi \u015f\u00f6yle bir soru sorabilirsiniz.&#8221;Server&#8217;da bir tane Session nesnesi olu\u015fturuluyorsa e\u011fer, Ahmet ile Zeynep ayn\u0131 anda siteye ziyaret\u00e7i olduklar\u0131nda ve TextBox&#8217;a &#8220;Ahmet&#8221; veya &#8220;Zeynep&#8221; yazd\u0131klar\u0131nda Session nesnesinin de\u011feri s\u00fcrekli de\u011fi\u015fmeyecek mi? \ud83d\ude42 Yani Ahmetin Session bilgileri Zeynepte ya da tam tersi durum, Zeynep&#8217;in Session bilgileri Ahmet&#8217;te g\u00f6z\u00fckme olas\u0131l\u0131\u011f\u0131 yok mu? &#8220;. Tabi siz soruyu daha k\u0131sa \u015fekilde sorabilirsiniz \ud83d\ude42<br \/>\nBu sorunun cevab\u0131 hay\u0131r yok.\u00c7\u00fcnk\u00fc, SessionID \u00f6zelli\u011fi sayesinde sunucu, ileti\u015fim i\u00e7ierinde oldu\u011fu istemcileri birbirinden ay\u0131rabilir.Yani, bir web sitesinden talepte bulunan binlerce kullan\u0131c\u0131y\u0131 birbirinden ay\u0131rt etmek i\u00e7in SessionID \u00f6zelli\u011fi kullan\u0131l\u0131r.Sunucu istemciye(client) bir SessionID atar.Her istemcinin kendine \u00f6zel SessionID&#8217;si olacakt\u0131r.\u0130stemcilere atanan SessionID&#8217;yi \u00f6\u011frenmek i\u00e7in a\u015fa\u011f\u0131daki kod yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        Response.Write(Session.SessionID);\r\n<\/pre>\n<p>Yukar\u0131daki gibi SessionID \u00f6\u011frenilebilir.Yeni bir taray\u0131c\u0131 penceresi a\u00e7\u0131p ayn\u0131 sayfaya y\u00f6nlendirdi\u011fimizde, yukar\u0131daki kodun yazd\u0131\u011f\u0131 SessionID&#8217;nin tamamen de\u011fi\u015fti\u011fini g\u00f6receksiniz.<br \/>\nBu y\u00fczden dolay\u0131 Ahmet ile Zeynep&#8217;in istemcileri SessionID sayesinde ayn\u0131 Session bilgilerini tutmayacakt\u0131r.<\/p>\n<hr \/>\n<p>Farkl\u0131 bir yol olarak a\u015fa\u011f\u0131daki \u015fekilde de kullan\u0131m yapabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Default.aspx---\r\n    protected void Button1_Click(object sender, EventArgs e)\r\n    {\r\n        Session&#x5B;&quot;Deger&quot;] = TextBox1.Text;\r\n    }\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Deneme.aspx---\r\n    protected void Page_Load(object sender, EventArgs e)\r\n    {\r\n        Response.Write(Session&#x5B;&quot;Deger&quot;].ToString());\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki y\u00f6ntemde oldu\u011fu gibi,Default.aspx sayfas\u0131nda TextBox nesnesine girilen de\u011feri Session nesnesine set edebilir ve set ettikten sonra Deneme.aspx sayfas\u0131nda o de\u011feri okuyabiliriz.<\/p>\n<hr \/>\n<p>Session nesnelerinde sadece tek bilgi tuttu\u011fumuzu zannetmeyiniz.\u015eimdi Default.aspx sayfas\u0131n\u0131 a\u015fa\u011f\u0131daki gibi d\u00fczenleyelim.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/04\/session.png\"><img loading=\"lazy\" decoding=\"async\" title=\"session\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2012\/04\/session.png\" alt=\"\" width=\"211\" height=\"87\" \/><\/a><br \/>\nYukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi Ad ve Soyad alanlar\u0131n\u0131 Default.aspx sayfas\u0131nda girip, Button nesnesine t\u0131klad\u0131\u011f\u0131m\u0131z zaman bu de\u011ferleri Session nesnelerine kaydettirelim.Deneme.aspx sayfas\u0131nda da bu Session nesnelerinin de\u011ferleri okutal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Default.aspx---\r\n    protected void Button1_Click(object sender, EventArgs e)\r\n    {\r\n        Session.Add(&quot;Ad&quot;,TextBox1.Text);\r\n\/\/Server belle\u011finde, Sessionlar i\u00e7inde ismi Ad olan bir Session nesnesi eklendi.\r\n        Session.Add(&quot;Soyad&quot;,TextBox2.Text);\r\n\/\/Server belle\u011finde, Sessionlar i\u00e7inde ismi Soyad olan bir Session nesnesi eklendi.\r\n    }\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n---Deneme.aspx---\r\n    protected void Page_Load(object sender, EventArgs e)\r\n    {\r\n        Response.Write(Session&#x5B;&quot;Ad&quot;].ToString());\r\n        Response.Write(Session&#x5B;&quot;Soyad&quot;].ToString());\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kodlar\u0131 derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Default.aspx sayfas\u0131nda Ad ve Soyad de\u011ferlerini girip Button nesnesine t\u0131klarsan\u0131z e\u011fer,Deneme.aspx sayfas\u0131nda girilen de\u011ferleri g\u00f6receksiniz.<\/p>\n<hr \/>\n<p>Bir Session nesnesi, oturum sonland\u0131\u011f\u0131nda iptal ediliyor.Browser&#8217;\u0131n kapat\u0131lmas\u0131 sonucu ya da belirlenen bir s\u00fcrenin a\u015f\u0131lmas\u0131 durumda Session nesnesi iptal edilebilir.<br \/>\nE\u011fer Session nesnesinin s\u00fcresi belirtilmemi\u015fse, varsay\u0131lan olarak 20 dk Session nesnesi var olacakt\u0131r.Tabi bu 20 dk, sitemize giren kullan\u0131c\u0131n\u0131n hi\u00e7 bir etkinlik yapmad\u0131\u011f\u0131 s\u00fcre zarf\u0131nca ge\u00e7erlidir.<br \/>\nSitemize giren her kullan\u0131c\u0131 i\u00e7in olu\u015fturulacak Session nesnesinin ya\u015fam s\u00fcresini kendiniz ayarlamak istiyorsan\u0131z, TimeOut \u00f6zelli\u011fini kullanmal\u0131s\u0131n\u0131z.<br \/>\n&#8212;Session.TimeOut = Dakika&#8212;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        Session.Timeout = 1;\r\n\/\/Session nesnesi 1 dakika sonra silinecektir.\r\n<\/pre>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere &#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar..<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Session&#8217;\u0131n kelime anlam\u0131 oturumdur.Her hangi bir ziyaret\u00e7i sitemize ilk girdi\u011fi anda, o ziyaret\u00e7iyle ilgili Session ba\u015flat\u0131lm\u0131\u015f olur.Ziyaret\u00e7imizle ilgili bir bilginin ba\u015fka bir sayfada elde edilmesini istiyorsak Sessionlar\u0131 kullanabiliriz.Server tarafl\u0131 \u00e7al\u0131\u015fan Sessionlar, bir sayfada ald\u0131klar\u0131&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[187,186],"class_list":["post-363","post","type-post","status-publish","format-standard","hentry","category-asp-net","tag-oturum","tag-session"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=363"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/363\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}