<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>asp.net session kullanımı arşivleri - Mehmet Kirazlı</title>
	<atom:link href="https://www.mehmetkirazli.com/tag/asp-net-session-kullanimi/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.mehmetkirazli.com/tag/asp-net-session-kullanimi/</link>
	<description>Yazılımcı Notları</description>
	<lastBuildDate>Fri, 06 Apr 2018 11:56:41 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.10</generator>

<image>
	<url>https://www.mehmetkirazli.com/wp-content/uploads/2018/04/mehmetkirazlilogo.png</url>
	<title>asp.net session kullanımı arşivleri - Mehmet Kirazlı</title>
	<link>https://www.mehmetkirazli.com/tag/asp-net-session-kullanimi/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Asp.Net Durum Yönetimi</title>
		<link>https://www.mehmetkirazli.com/asp-net-durum-yonetimi/</link>
					<comments>https://www.mehmetkirazli.com/asp-net-durum-yonetimi/#comments</comments>
		
		<dc:creator><![CDATA[Mehmet Kirazlı]]></dc:creator>
		<pubDate>Sat, 26 May 2012 15:25:53 +0000</pubDate>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[asp.net durum yönetimi]]></category>
		<category><![CDATA[asp.net session kullanımı]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[cookine nedir]]></category>
		<category><![CDATA[hidden form field]]></category>
		<category><![CDATA[httpcookie]]></category>
		<category><![CDATA[querystring]]></category>
		<category><![CDATA[session kullanımı]]></category>
		<category><![CDATA[viewstate]]></category>
		<guid isPermaLink="false">http://www.mehmetkirazli.com/?p=515</guid>

					<description><![CDATA[<p>  Web sayfalarında sayfa ile server arasındaki iletişim ,  HTTP protokolü ile gerçekleştirilir. Bu protokolde sunucuya gönderdiğimiz bilgiler, kendi bilgisayarımızda kalıcı değildir. Biz bir istek gönderdiğimizde sunucuda sayfamızın bir örneği oluşturulur. Gönderdiğimiz bilgiler sunucuya gider ve orada işlenir. İşlendikten sonra sayfanın örneği, sunucudan silinir.Bu gönderdiğimiz verilere tekrar erişebilmek ve bunları taşıyabilmek için durum yönetimi kontrolleri geliştirilmiştir. &#8230;</p>
<p>The post <a rel="nofollow" href="https://www.mehmetkirazli.com/asp-net-durum-yonetimi/">Asp.Net Durum Yönetimi</a> appeared first on <a rel="nofollow" href="https://www.mehmetkirazli.com">Mehmet Kirazlı</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;">  Web sayfalarında sayfa ile server arasındaki iletişim ,  HTTP protokolü ile gerçekleştirilir. Bu protokolde sunucuya gönderdiğimiz bilgiler, kendi bilgisayarımızda kalıcı değildir.<span id="more-515"></span></p>
<p style="text-align: justify;">Biz bir istek gönderdiğimizde sunucuda sayfamızın bir örneği oluşturulur. Gönderdiğimiz bilgiler sunucuya gider ve orada işlenir. İşlendikten sonra sayfanın örneği, sunucudan silinir.Bu gönderdiğimiz verilere tekrar erişebilmek ve bunları taşıyabilmek için durum yönetimi kontrolleri geliştirilmiştir.</p>
<p style="text-align: justify;">  Yazdığımız masaüstü programlarda global değişkenler tanımlayarak, istediğimiz yerlerde atadığımız bilgilere erişebiliyorduk. Durum kontrolleri, masaüstü programlamadaki global değişkenlerin görevini üstlenir</p>
<p style="text-align: justify;">  Bu bilgiler istemci ve sunucu tarafında saklanabilir. Eğer istemci tabanlı durum yönetimlerini kullanırsak her istemci için sunucuda bir yer ayrılır. Bu sayfanın kullanıcısı çok olursa, bu bilgilerin server tarafında tutulması zorlaşacak ve belki de sunucu isteklere yanıt veremeyecektir. Ayrıca istemci taraflı kontrolleri kullanırsak güvenlik açısından sıkıntı oluşturur. Eğer Sunucu taraflı kontrolleri kullanırsak bu güvenlik sorunu en aza iner. Şimdi bu durum yönetimlerini inceleyelim;</p>
<p>&nbsp;</p>
<h4><strong> <span style="color: #ff0000;"> İstemci tabanlı durum yönetimleri;</span></strong></h4>
<ul>
<li>View State</li>
<li>Hidden Form Field</li>
<li>Cookie</li>
<li>Query String</li>
</ul>
<p>&nbsp;</p>
<h3><strong style="text-align: justify;">VİEWSTATE</strong></h3>
<p style="text-align: justify;"><span style="text-align: justify;">     ViewState nesnesi ASP.NET’te form düzeyinde verileri saklamak için kullanılır.Yani Sayfa geçişleri arasında verileri saklamak için kullanılır.Asp dilinde kod yazarken postback işlemi sonrasında veriler kayboluyordu.Bunun önüne geçmek için <span style="color: #ff0000;">viewstate</span> nesnesi kullanılmaya başlandı.Bu sayede sayfa postback olduğunda verilerin, form üzerinde saklanması sağlandı.Kısaca açıklayacak olursak tarayıcı ve sunucu arasında bilgi alışverişi yapar.Sunucuya gönderilen değerler viewstate içinde saklanır ve tarayıcıya dönen değerler, viewstate içerisine depo edilerek gönderilir.</span>Bu nesnenin olumsuz yönü,biliçsiz kullanıldığında kontrolün içi şişer ve performansı azalır</p>
<p style="text-align: justify;">  Bu kontrolün <span style="color: #008000;">EnableViewState</span> özelliği ile kontrolün özelliklerinin ViewState içerisinde taşınılıp taşınılmayacağı belirlenir ve varsayılan değeri <span style="color: #ff0000;">true</span> dur.Bu durumda sayfa postback olduğunda verilerimiz viewstate içerisinde saklanır.Bunu<span style="color: #ff0000;"> false</span> olarak ayarlarsak veriler viewstate içerisinde taşınmaz.Bu özellik,sayfanın load olayında false edilmek istenirse;</p>
<p><span style="color: #ff0000;">Page.EnableViewState = false;</span> olarak ayarlanmalıdır</p>
<p>Eğer uygulama düzeyince kapatmak istiyorsak <span style="color: #008000;">web.config</span> dosyasında <span style="color: #008000;">&lt;system.web&gt;</span> altında <span style="color: #ff0000;">&lt;pages enableviewstate=&#8221;false&#8221;&gt; &lt;/pages&gt;</span> yapılarak kapatılabilir.</p>
<h3><strong>QUERYSTRİNG</strong></h3>
<p style="text-align: justify;">    QueryString ile taşınacak olan veri,<span style="color: #ff0000;">URL</span> aracılığı ile diğer sayfalara taşınabilir. Taşınacak veriler, sayfanın adı yazıldıktan sonra <span style="color: #ff0000;"><strong>? </strong></span>işareti ile başlayan kısımda <span style="color: #ff0000;">anahtar-değer</span> şeklinde taşınmaktadır. Bu yöntem kullanım kolaylığı ve sunucuya getirdiği yükün az olması nedeni ile pek çok yazılımcının tercihi olmaktadır ve hemen hemen her site bu yöntemi kullanmaktadır.Fakat <span style="color: #ff0000;">QueryString</span> ile taşınan veriler kullanıcılar tarafından görüntülenebilmektedir ve dolayısıyla bir güvenlik açığı oluşturmaktadır. Kullanıcılar, bu verileri istedikleri şekilde değiştirip yönlendirilen forma farklı veriler gönderip farklı işlemler yapılmasını sağlayabilirler. Bu sorunu aşmak için veriler bir şekilde şifrelenerek gönderilse bile sonuçta verinin şifrelenmiş halini kullanıcılar görebileceklerdir. Bir takım yöntemlerle kullanılan şifreleme algoritması çözülüp yeniden şifrelenerek yine farklı bir veri gönderilebilir.Dolayısıyla, <span style="color: #ff0000;">QueryString’e</span> çok fazla güvenip çok önemli veriler taşımamak gerekir</p>
<p>Örnek verirsek ;</p><pre class="crayon-plain-tag">protected void Button1_Click(object sender, EventArgs e)
{
   Response.Redirect("Sayfa2.aspx?veri1=Mehmet&amp;veri2=Kirazlı");
}</pre><p>
</p><pre class="crayon-plain-tag">protected void Page_Load(object sender, EventArgs e)
{
   string metin= Request.QueryString["veri1"];
   string metin2 = Request.QueryString["veri2"];
   Response.Write(metin + "  " + metin2);
}</pre><p>
<p style="text-align: justify;">  Burada butona tıklandığında <span style="color: #ff0000;">Response.Redirect</span> içerisinde bulunan <span style="color: #ff0000;">veri1</span> ve <span style="color: #ff0000;">veri2</span> değişkenlerindeki bilgileri <span style="color: #008000;">sayfa2</span> ye yollar<span style="color: #008000;">.Sayfa2</span>.nin load olayında ise bu bilgiler alınarak değişkenlere atılır ve ekrana yazılır.<span style="color: #008000;">Sayfa1</span> de gönderilcek 2 parametre birbirinden <span style="color: #ff0000;">&amp;</span> simgesi ile ayrılır.Sayfa2 de veriler, <span style="color: #ff0000;">Request.QueryString</span> ile alınır.</p>
<h3><strong> COOKİE(ÇEREZLER)</strong></h3>
<p style="text-align: justify;">    İstemci bilgisayarda saklanan, kullanıcı bilgilerinden oluşan <span style="color: #ff0000;">.txt</span> uzantılı dosyalardır<span style="color: #ff0000;">.Cookie</span> adlı dizin altında tutulurlar.eğer kullanıcı isterse çerezlerin bilgisayarında saklanmasını engelleyebilir.Çerezler, genelde <span style="color: #ff0000;">4096</span> byttır.Cookie&#8217;lerin kullanıcı bilgisayarında ne kadar süre saklanacağı da belirtilebilir. Cookie nesnesinin en önemli avantajlarından biri uzun süre istemcinin bilgisayarında taşınabileceği için farklı zamanlarda erişilebilir olmasıdır.Asp.Nette Cookie ler <span style="color: #ff0000;">HttpCookies</span> sınıfından türetilirler.<span style="color: #ff0000;">HttpCookies</span> sınıfından oluşturulacak nesne örneği üzerinden istemcinin bilgisayarına Cookie bilgilerinin yazılması, okunması ve bu bilgilerin ne kadar süre boyunca aktif tutulacağı gibi işlemlerin yapılması sağlanabilir</p>
<p>Şimdi web sayfamızda tasarımı şu şekilde yapalım;<br />
<img decoding="async" src="https://www.mehmetkirazli.com/wp-content/uploads/2012/05/cookies.jpg" alt="cookie" /></p>
<p><span style="color: #ff0000;">Cookie&#8217;e</span> at butonuna tıklayınca textbox&#8217;a girilen veriyi <span style="text-decoration: underline;">cookie &#8216; ye atar</span> ve <span style="color: #ff0000;">oku</span> okutonuna basılınca Label üzerinde gösterir</p><pre class="crayon-plain-tag">protected void Button1_Click(object sender, EventArgs e)
 {
  HttpCookie cerez = new HttpCookie("Cookie");
  cerez["ad"] = TextBox1.Text;
  cerez.Expires = DateTime.Now.AddDays(1);
  Response.Cookies.Add(cerez);
 }
protected void Button2_Click(object sender, EventArgs e)
 {
  HttpCookie cerezOku = Request.Cookies["Cookie"];
  Label1.Text = cerezOku["ad"];
 }</pre><p>
Buraki kodların birkaçını açıklayalım;</p>
<p><span style="color: #ff0000;">cerez[&#8220;ad&#8221;] = TextBox1.Text;</span> =&gt;ad ismindeki Cookie anahtarına girilen değer atar<br />
<span style="color: #ff0000;">cerez.Expires = DateTime.Now.AddDays(1);</span> =&gt;Cookie nesnesinin 1 gün boyunca geçerli olacağını belirtir<br />
<span style="color: #ff0000;">Response.Cookies.Add(cerez);</span>  =&gt; cerez içerisinde taşınan değerlerin bir Cookie olarak istemcinin bilgisayarına<br />
eklenmesini sağlar</p>
<p>Çıktı ise şu şekilde olur;<br />
<img decoding="async" src="https://www.mehmetkirazli.com/wp-content/uploads/2012/05/cookie2.jpg" alt="cookies" /></p>
<p>&nbsp;</p>
<p><strong><span style="color: #ff0000;">Sunucu</span> <span style="color: #ff0000;">tabanlı durum yönetimleri;</span></strong></p>
<ul>
<li>Session</li>
<li>Application State</li>
</ul>
<h3><strong>SESSION (OTURUM)</strong></h3>
<p style="text-align: justify;">   Sunucudan bir sayfa talep edildiğinde, web sunucusu <span style="text-decoration: underline;">her kullanıcı için</span> bir oturum başlatır. Session nesneleri ile kullanıcı bilgilerini oturum boyunca sayfalar arasında taşıyabiliriz. <span style="color: #ff0000;">Örneğin</span> alışveriş sitelerinde sepete eklenenleri session ile sayfalar arasında taşıyabiliriz.Sessionda taşınan veriler  tüm sayfalardan erişilebilir.Yine alışveriş sitelerinde oturum kapatıldığında bu veriler silinir.Yani session nesnesinde saklanan veriler,sayfa kapatıldığında sona erer.Session daki veriler server tarafında tutulduğu için kullanıcı siteyi terk ettiğinde Session’daki bilgilerin temizlenmesi isteniyorsa <span style="text-decoration: underline;">muhakkak oturum sonlandırılmalıdır</span>.Session içerisinde çok kritik veriler saklanabilmektedir ve bu sebeple Session mutlaka sonlandırılmalıdır.</p>
<p>    <span style="color: #ff0000;">Session</span>; oturum zaman aşımına uğradığında, kullanıcı pencereyi kapattığında, kullanıcı oturumu kapattığında <span style="text-decoration: underline;">sonlanır</span></p>
<p style="text-align: justify;">  ASP.NET’te her kullanıcı için oturum başlatılır.Aynı bilgisayarda bile olsa siteye erişen her tarayıcı penceresi için bir oturum başlatılır.Oturum açan her kullanıcı için <span style="color: #ff0000;">SessionID</span> üretilir.Sessionda saklanan değerler,istemciye gönderilmez sadece sessionID değeri gönderilir.Bu yüzden bu yöntemler arasında performansı en yüksek olanlardan biridir</p>
<p>  Session&#8217;da veri aktarma yöntemi,<span style="color: #008000;">viewstate</span> ile benzerlik gösterir.<span style="color: #ff0000;">Session[“keyAdi”]=deger</span> veya <span style="color: #ff0000;">Session.Add(“keyAdi”,deger)</span> ile session nesnesine değerler atanır.Veri okurken de <span style="color: #ff0000;">Session[“keyAdi”]</span> ile okuma yapılır</p>
<p>&nbsp;</p>
<h4><strong>Session Örnek</strong></h4>
<p style="text-align: justify;"><span style="color: #008000;">   Oturum kontrolü</span> üzerinde örneğimizi anlatalım.Sayfamız ilk yüklendiğinde eğer oturum açmış bir kullanıcı yoksa sadece <span style="color: #3366ff;">hoşgeldin</span> yazsın.Eğer oturum açan biri ise <span style="color: #3366ff;">hoşgeldin &#8221; kullanıcının ad ı&#8221;</span> yazsın.Bunun için<span style="color: #ff0000;"> Default.aspx</span> sayfamıza <span style="text-decoration: underline;">1 label</span> <span style="text-decoration: underline;">1 textbox</span> ve <span style="text-decoration: underline;">1 buton</span> ekliyoruz.Eğer oturumu açık olan biri giriş yaptıysa Label üzerinde <span style="color: #3366ff;">hoşgeldin &#8220;kullanıcı adı&#8221;</span> yazacak.Eğer yok ise Textbox&#8217;a kullanıcı adı girilecek ve<span style="color: #ff0000;"> oturum aç</span> butonuna basılınca <span style="color: #ff0000;">Profil.aspx</span> sayfasına gidilecek.O sayfada ise <span style="color: #3366ff;">Hoşgeldin Mehmet</span> tarzında bir mesaj verilecek ve oturum kapatılacak yani session nesnesinin içerisi temizlenecek.<span style="color: #ff0000;">Default.aspx</span> sayfasının Page_Load olayına aşağıdaki kodları yazalım;</p>
<pre class="crayon-plain-tag">protected void Page_Load(object sender, EventArgs e)
{
    if (Session["Kullanici"]==null)
    {
       Label1.Text = "Hoşgeldiniz";
    }
    else
    {
       Label1.Text = "Hoşgeldin" + Session["Kullanici"].ToString();
    }
}</pre>
Şimdi de Default.aspx sayfamızdaki Oturum aç butonunun Click olayına aşağıdaki kodu yazalım;<br />
<pre class="crayon-plain-tag">Session.Add("Kullanici", TextBox1.Text);
 Response.Redirect("Profil.aspx");</pre>
Son olarak da Profil.aspx sayfamızın load olayına şunları yazalım;<br />
<pre class="crayon-plain-tag">protected void Page_Load(object sender, EventArgs e)
 {
   if (Session["Kullanici"] == null)
   {
      Response.Redirect("Default.aspx");
   }
   else
   {
      Response.Write("hoşgeldin " + Session["Kullanici"]);
      Session.Abandon();
   }
}</pre>
<p style="text-align: justify;">    Buradaki kodları şimdi anlatalım.İlk olarak <span style="color: #ff0000;">Default.aspx</span> sayfamız çalışacağı için ve burada hali hazırda bir kullanıcı oturumu olmadığı için sadece <span style="color: #008000;">Hoşgeldin</span> yazısı çıkacaktır.Textbox&#8217;a <span style="color: #008000;">Mehmet</span> yazısını yazıp oturum aç&#8217;a tıklayınca <span style="color: #ff0000;">Profil.aspx</span> sayfasına gidecek ve bu sayfanın Page_Load olayında oturum açmış bir kullanıcı olduğu için<strong><span style="color: #ff0000;"> else</span></strong> kısmına girecek ve ekrana <span style="color: #008000;">Hoşgeldin Mehmet</span> yazısını yazacaktır.Mehmet ismi ise <span style="color: #ff0000;">Session[Kullanici]</span> nesnesi ile taşınıyor.Daha sonra bu session&#8217;u <span style="color: #ff0000;">Session.Abandon();</span> ile kapatıyoruz.Çünkü proje tekrar çalıştırıldığında oturum açmış bir kullanıcı olacaktır.Biz örneğimizde bunun olmasını istemiyoruz</p>
<h3><strong>APPLICATION STATE</strong></h3>
<p style="text-align: justify;">   Sitenin genelini ilgilendiren bilgilerin tutulabildiği nesne Application nesnesidir. Application nesnesi global bir değişken gibi düşünülebilir. Siteye erişen her kullanıcı aynı bilgileri görüp değiştirebilmektedir. Application nesnesinde de veri saklanırken, tıpkı Session ve ViewState nesnelerinde olduğu gibi anahtar-değer çiftleri kullanılır. Session ve ViewState nesnelerinde her anahtarda tutulan değer kullanıcıya özgü bir değerken, Application nesnesinde tutulan değer tüm kullanıcılar için ortak olmaktadır.Application nesnesine veri eklerken <span style="color: #ff0000;">Application.Add(&#8220;key&#8221;, &#8220;deger&#8221;)</span> ya da <span style="color: #ff0000;">Application[&#8220;key&#8221;] = &#8220;deger&#8221;</span> sözdizimi kullanılırken, Application nesnesinden veri okumak için <span style="color: #ff0000;">Application[&#8220;key&#8221;]</span> sözdizimi kullanılmaktadır</p>
<p style="text-align: justify;">  <span style="color: #ff0000;">Global.asax</span> dosyasında 5 adet olay yakalayıcı metod bulunur.Bu metodlar,yanındaki olaylar olduğunda tetiklenir</p>
<p><span style="color: #008000;">Application_Start</span> =&gt;Uygulama ilk defa çalıştırılırken tetiklenir<br />
<span style="color: #008000;">Application_End</span> =&gt;Uygulama bilinçli bir şekilde kapatılırken tetiklenir<br />
<span style="color: #008000;">Application_Error</span> =&gt;Uygulamada bir hata oluştuğunda tetiklenir<br />
<span style="color: #008000;">Session_Start</span> =&gt;Web sitesinde yeni bir oturum açıldığında tetiklenir<br />
<span style="color: #008000;">Session_End</span> =&gt;Web sitesinde bir oturum sonlandığında tetiklenir</p>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://www.mehmetkirazli.com/asp-net-durum-yonetimi/">Asp.Net Durum Yönetimi</a> appeared first on <a rel="nofollow" href="https://www.mehmetkirazli.com">Mehmet Kirazlı</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mehmetkirazli.com/asp-net-durum-yonetimi/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
