1
Merhaba. Bir sorunum var. Admin paneli de olan bir Web projesinde çalışıyorum. Admin Web Config dosyasına yazdığım sessionState timeout değerini sistem algılamyor. Örneğin 20 dakika verdiğimde kullanıcı Admin panelinde ürün eklerken 5-6 dakika bilgisayar başından ayrılıp geri döndüğünde işini bitirip kaydet tuşuna basınca ana sayfaya atıyor. Yani kaydetmiyor. Bir bakar mısınız? Web Config kodları aşağıdadır:
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<system.web>
<!--<sessionState mode="Off"/>-->
<customErrors mode="RemoteOnly" defaultRedirect="/tr/Anasayfa">
<error statusCode="404" redirect="/404"/>
<error statusCode="500" redirect="/500"/>
</customErrors>
<!--<customErrors mode="Off" />-->
<pages enableViewState="false" validateRequest="false">
<controls>
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
</controls>
</pages>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5" executionTimeout="3600" maxRequestLength="250000" requestValidationMode="2.0" />
<sessionState timeout="20"/>
</system.web>
<system.serviceModel>
<bindings />
<client />
</system.serviceModel>
<system.webServer>
<staticContent>
<remove fileExtension=".woff" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".woff2" mimeType="font/x-woff" />
</staticContent>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2000000000" maxQueryString="2048" maxUrl="4096" />
</requestFiltering>
</security>
</system.webServer>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Aşağıda da Code Behind kısmında yazdıklarım. Her sayfa için bunun benzerini yapıyorum. Örneğin ana sayfa:
if (Session["User"] != null)
{
Session["CurrentPage"] = "Anasayfa";
string language = Session["Culture"].ToString();
if (!Page.IsPostBack)
{
}//if
}//if
else
{
HttpCookie currentPage = new HttpCookie("CurrentPage");
currentPage.Values.Add("Page", "Anasayfa");
currentPage.Expires.AddMinutes(20);
Response.Cookies.Add(currentPage);
if (Request.Cookies["LockScreen"] != null)
{
Response.Redirect("/" + Application["DefaultPrefix"].ToString() + "/Kilit-Ekrani");
}
else
{
Response.Redirect("/" + Application["DefaultPrefix"].ToString() + "/Uye-Girisi");
}
}//else
0
İki tane kavram var. Bir Application Pool sesion timeout, diğeri web sitesi session timeout.
Web sunucun üzerindeki, web sitenin çalıştığı Application Pool (IIS application pool nedir?) Session Timeout süresi, senin web.config üzerinden sessionState timeout="20" ile belirlediğin değerden büyük değilse yazdığın ifade geçersiz olur.
Yani eğer senin web sunucundaki IIS içinde, uygulamanın bağlı olduğu Application Pool timeout süresi 10dk ise senin verdiğin 20dk geçersiz olur.
Eğer web sunucuna ya da paneline erişimin varsa, Application Pool için Session Timeout süresini yükseltmelisin. Örneğin sunucu üzerinde timeout süresini 60 yaparsan uygulamanda, web.config üzerinden sessionState timeout="50" yaparsan bu artık geçerli olacaktır.
Forms authentication kullanıyorsan, kullanıyorsan, timeout süresini aşağıdaki şekilde uzatabilirsin.
Session["User"] != null gibi değerleri Sessionda saklamana gerek kalmaz. User.Identity.IsAuthenticated şeklinde kontrollerini yapabilirsin.
<authentication mode="Forms">
<forms loginUrl="~/signout.aspx" timeout="40" />
</authentication>
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol
25 Ocak 2018 uzmanim.net güncellemesi
30 Haziran 2017 uzmanim.net güncellemesi
26 Aralık 2016 uzmanim.net güncellemesi
08 Eylül 2016 uzmanim.net kural ihlali yapan kullanıcılar ve yaptırımlar