Makale numarası: 316148 - Son Gözden Geçirme: 18 Nisan 2007 Çarşamba - Gözden geçirme: 4.2

SORUN: ASP.NET uygulamalarında oturum değişkenleri zaman zaman kayboluyor

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Microsoft ASP.NET uygulamalarında, oturum değişkenleri zaman zaman kaybolabilir.

Bu sorun bir Microsoft Application Center 2000 kümesinde oluştuğunda, virüsten koruma yazılımı Web.config veya Global.asax dosyalarını tararsa denetleyicideki oturumlar sonlandırılır. Tarama işlemi bir çoğaltmayı tetikler ve bu da her üye sunucudaki dosya değiştirildikçe oturumların sonlandırılmasına neden olur.

Neden

Bu sorunun birçok olası nedeni bulunmaktadır. Bu makalede, olası bir neden açıklanmaktadır: virüsten koruma yazılımı etkinliği nedeniyle kaybolan oturum bilgileri.

Bu sorun, Web uygulama dosyaları virüsten koruma yazılımı tarafından tarandığında oluşabilir. Tarama işlemi sırasında, virüsten koruma yazılımı Global.asax, Web.config ve/veya Machine.config dosyalarını değiştirilmiş olarak işaretleyebilir. Bu değişiklik nedeniyle, Microsoft .NET Framework'ten Web uygulamasını yeniden başlatması istenebilir. Oturum verileri işlem içinde saklanıyorsa, bir Web uygulaması her yeniden başlatıldığında tüm oturum verileri kaybolur.

Çözüm

Bu sorunu gidermek için aşağıdaki yöntemlerden birini kullanın:
  • Virüsten koruma yazılımınızı .asax ve .config dosyalarını taramayacak biçimde yapılandırın.
  • Yönergeler için virüsten koruma yazılımı üreticinize başvurun.
  • Web uygulamanızı, oturum verilerini işlem dışında depolayacak biçimde yapılandırın. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    307598  (http://support.microsoft.com/kb/307598/ ) ASP.NET durum yönetimine genel bakış (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)

Durum

Bu davranış tasarım gereğidir.

Daha fazla bilgi

Davranışı yeniden oluşturma adımları

Not Bu örnekte, Web uygulamanızın oturum verilerini işlem içinde sakladığı varsayılmaktadır (bu, varsayılan davranıştır).
  1. Microsoft Visual Basic .NET'te bir Web uygulaması oluşturmak üzere aşağıdaki adımları izleyin:
    1. Microsoft Visual Studio .NET'i başlatın.
    2. File (Dosya) menüsünde, New'un (Yeni) üzerine gelin ve Project'i (Proje) tıklatın.
    3. New Project (Yeni Proje) iletişim kutusunda, Project Types (Proje Türleri) altında Visual Basic Projects'i (Visual Basic Projeleri) ve sonra da Templates (Şablonlar) altında ASP.NET Web Application'ı (ASP .NET Web Uygulaması) tıklatın.
    4. Location (Konum) metin kutusuna http://localhost/TestWeb1 yazın.
    5. Projeyi oluşturmak için OK'i (Tamam) tıklatın. Projenize WebForm1.aspx dosyası varsayılan olarak eklenir.
  2. Solution Explorer (Çözüm Gezgini) penceresinde, WebForm1.aspx öğesini sağ tıklatın ve ardından View Code'u (Kodu Göster) tıklatın.
  3. Page_Load olay yordamına aşağıdaki kodu ekleyin:
    Response.Write("<b>Oturum Değişkeni Sınaması</b><br>&#xa0;<br>")
    If IsNothing(Session("TestVal")) Then
        Response.Write("TestVal eski değeri: <b>yok</b>")
        Session("TestVal") = 0
    Else
        Response.Write("TestVal eski değeri: " & Session("TestVal"))
    End If
    Session("TestVal") += 1
    Response.Write("<br>TestVal yeni değeri: " & Session("TestVal"))
    					
  4. Build (Yapı) menüsünde, Build Solution'ı (Çözümü Derle) tıklatın.
  5. Solution Explorer (Çözüm Gezgini) penceresinde, WebForm1.aspx öğesini sağ tıklatın ve ardından View in Browser'ı (Tarayıcıda Göster) tıklatın.
  6. Tarayıcınızda, Yenile'yi tıklatın. Sayfanın oturum değişkeni başlangıç değeri olarak yok ifadesini görüntülediğine dikkat edin.
  7. Yenile'yi birkaç kez tıklatın. Oturum değişkeni başlangıç değerinin, sayfayı her yenilediğinizde artan bir sayıya dönüştüğüne dikkat edin.
  8. Sayfayı tarayıcınızda açık olarak bırakın.
  9. Not Defteri'nde, projenizin klasöründen Global.asax dosyasını açın. Bu TestWeb1 projesinin Global.asax dosyası genelde C:\Inetpub\wwwroot\TestWeb1\Global.asax klasöründe bulunur.
  10. Ekleme noktasını Global.asax dosyasında boş bir satıra taşıyın ve ENTER tuşuna basarak ikinci bir boş satır ekleyin. Dosyanın değiştirilmiş olarak işaretlenmesi için bu adımı gerçekleştirmelisiniz.
  11. Global.asax dosyasında yaptığınız değişiklikleri kaydedin.
  12. Tarayıcınızda, Yenile'yi yeniden tıklatın. TestVal oturum değişkeninin başlangıç değeri olarak yok ifadesini kullandığına dikkat edin. İşlem içindeki oturum değişkenleriniz kaybolur.

Referanslar

Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
303881  (http://support.microsoft.com/kb/303881/ ) SORUN: ASP Web uygulamalarında oturum değişkenleri kayboluyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)
317604  (http://support.microsoft.com/kb/317604/ ) NASIL YAPILIR: SQL Server'ın ASP.NET Oturum Durumunu Saklamasını Yapılandırma
871042  (http://support.microsoft.com/kb/871042/ ) ASP.NET uygulamam neden yeniden başlatılıyor?

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Anahtar Kelimeler: 
kbcaching kbconfig kbprb kbstate kbsysadmin KB316148