none
Refresh, son işlem tekrarı sorunu

    Soru

  • merhabalar,

    sayfamda butonun click'inde jquery ile messagebox bilgilendirme mesajı verdiriyorum, sonra sayfa refresh edilince bu mesaj tekrar ediyor, bunu engellemek için nette  bir kod buldum

            private bool _refreshState;
            private bool _isRefresh;
            protected override void LoadViewState(object savedState)
            {
                object[] AllStates = (object[])savedState;
                base.LoadViewState(AllStates[0]);
                _refreshState = bool.Parse(AllStates[1].ToString());
                _isRefresh = _refreshState == bool.Parse(Session["__ISREFRESH"].ToString());
            }
            protected override object SaveViewState()
            {
                Session["__ISREFRESH"] = _refreshState;
                object[] AllStates = new object[2];
                AllStates[0] = base.SaveViewState();
                AllStates[1] = !(_refreshState);
                return AllStates;
            }
    

    ve butonun click'inde yaptığım işlemleri

     if (_isRefresh == false)
    

    içine aldım, button click sonrası refreshte mesaj tekrar etmiyor, ama belli bir süre sonra sayfada  postback yada refresh yapıldığında hata veriyor, timeoutla alakalı bişeymi, ben çözemedim yardımcı olursanız sevinirim,

    13 Kasım 2011 Pazar 07:49

Yanıtlar

  • belli bir süre sonra session sonlanıyodur bu yüzden hata veriyordur. Session' ın varsayılan timeout süresi 20 dakikadır. web.config içerisinde bu süreyi artırıp azaltabilirsiniz.

     

    <sessionState timeOut="45"/>
    

     


    session timeout süresini 45 dakika yapar.

     

     


    http://www.mehmetx.com
    • Yanıt Olarak İşaretleyen makul 13 Kasım 2011 Pazar 14:23
    13 Kasım 2011 Pazar 10:24

Tüm Yanıtlar

  • belli bir süre sonra session sonlanıyodur bu yüzden hata veriyordur. Session' ın varsayılan timeout süresi 20 dakikadır. web.config içerisinde bu süreyi artırıp azaltabilirsiniz.

     

    <sessionState timeOut="45"/>
    

     


    session timeout süresini 45 dakika yapar.

     

     


    http://www.mehmetx.com
    • Yanıt Olarak İşaretleyen makul 13 Kasım 2011 Pazar 14:23
    13 Kasım 2011 Pazar 10:24
  • teşekkürler, süreyi uzatınca hata verme süreside uzadı,
    peki orda 45 yada daha fazla yazmak yerine başka bi değer atayamazmıyız, browser kapanana kadar,
    birde yukarda kullandığım kodlar  ve webconfig e yazdıgım session süresi visualstudio nun kendi membership yapısının sessionlarını etkilermi,
    13 Kasım 2011 Pazar 14:19
  • browser' ı kapatmanızdan server' ın normal şartlarda haberi olmaz. 

    server' a browser' ın kapatıldığı bilgisini göndermek için aşağıdaki gibi bir yol deneyebilirsiniz.

    projenize yeni bir sayfa ekleyin (sonlandir.aspx)

    bu sayfanın (sonlandir.aspx) load' unda : 

    Session.Abandon();
    

    yazın.


    normal sayfanızın (dikkat sonlandir.aspx değil) body' sinin onBeforeUnload' unu aşağıdaki gibi düzenleyin.

    <body onBeforeUnload="window.location.href='sonlandir.aspx';">
    

    sayfanız kapatılmadan önce sonlandir.aspx' e istek gönderilecek ve sonlandir.aspx' in load' unda session' ı temizlemiş olursunuz. ancak eski browser' larda çalışmayabilir. 


    http://www.mehmetx.com
    13 Kasım 2011 Pazar 18:48
  • teşekkürler
    14 Kasım 2011 Pazartesi 10:10