Yük Dengeli IIS 7.5 Web Sunucusu ASP.NET Oturum Durumu sorunu


14

kullanıcıların oturumlarının tuhaf davrandığı bir ASP.NET web sitesinde sorun yaşıyoruz - oturum verileri görünüyor, kayboluyor ve yeniden görünüyor.

Sanırım sorunun ne olduğunu biliyorum:

  1. Kurulumumuz 2 x Yük dengeli WebSunucu + tek oturum durumu veritabanıdır.
  2. ASP.NET SQL oturum durumu depolamasının, gelen oturum çerezi kimliğini benzersiz olarak tanımlamak ve değerleri almak / depolamak için IIS Web Sitesi Örnek Kimliğine (Metatabanı Kimliği) bağlı olduğu görülmektedir.
  3. Web sitesinin IIS Web sitesi Örneği Kimliği canlı sunucuların her birinde farklıdır (ID / W3SVC / 1 / Kök WebSunucusu'nu A, ID / W3SVC / 2 / Kök Websunucusu B).
  4. Yük dengeleme istemci benzeşimi kullanmıyor, bu nedenle her kullanıcı HTTP isteği her iki sunucuya da gidebiliyordu.

Bu nedenle, kullanıcı sitede oturum açıp dolaşırken, her HTTP çağrısı her iki web sunucusuna da gidebilir ve bu nedenle sunucuya bağlı olarak farklı kimliklere sahip bir Oturum Durumu kaydı kullanabilir. Aslında kullanıcının aynı anda 2 ayrı oturum örneği olacaktır. Ben veritabanı olarak bu doğruladıktan inanıyoruz ASPStateTempSessions masa, her oturum çerez kimliği 2'ye tekabül görünüyor neredeyse aynı ada onların kimlikleri yalnızca ben dayalı bir değiştirici olduğuna inanıyoruz Son birkaç karakter farklılık (kayıtlarından Appıd dan AspStateTempApplications tablosu) birbirinden saniye içinde oluşturuldu.

Bu nedenle, bir oturum kaydında yapılan değişiklikler yalnızca bu web sunucusunda devam edeceğinden, Oturum Durumu hatalı davranıyor gibi görünecektir. Kullanıcı diğer yük dengeli sunucuya taşınırsa, oturum değerleri kaybolur veya geri döner gibi görünür.

Çözüm, sitelerin IIS Örnek Kimlikleri'ni senkronize etmek olduğuna inanıyorum (örneğin her ikisini de / W3SVC / 1 / Root yapın ), ancak IIS'de bu değeri Gelişmiş Ayarlar altında düzenlemeye çalıştım ve Tamam olmasına rağmen, Ben değiştirene kadar site sunucu 404s dönün.

Ben VBS senaryonubulmuş Bu sorunun ancak bunu çalışıyorum endişe ediyorum sadece bu IIS 6 için gibi görünüyor. IIS 7.5'te bu durumla karşılaşan başka kimse var mı ve nasıl düzelttiniz?


DÜZENLEME / ÇÖZÜM

Benim hatam, IIS'de Site Örnek Kimliğini değiştirdikten sonra IIS'yi yeniden başlatmayı unuttum. Bundan sonra kimlik güncellendi ve ASP.NET oturumları iki web sunucusunda senkronize edildi.

Tam talimatlar:

  1. LIVE1 sunucusuna Uzak Masaüstü'nü açın, IIS Mgr'yi açın, sorunlu Siteyi tıklayın ve kenar çubuğundan Gelişmiş Ayarlar'ı seçin .
  2. Kimliği benzersiz bir şeyle değiştirin, örneğin 10. Tamam'ı tıklatın.
  3. Web hizmetini yeniden başlatın ( c:\windows\system32\iisreset /restart)

LIVE2 için de aynısını yapın (Site Kimliğinin LIVE1 ile aynı olduğundan emin olun)

Site kimliğinin, örneğin günlük dosyası klasörü gibi site dosyalarının konumunu etkilediğini unutmayın C:\inetpub\logs\LogFiles\W3SVC10.

Site düzenleyerek elle bu değişiklikleri yapabileceği Ayrıca Not kimliği her sunucuda yapılandırma dosyası IIS içinde niteliğini: C:\Windows\System32\inetsrv\config\applicationHost.config. Yönetici ayrıcalıkları gerektirir ve daha sonra yine de sıfırlanması gerekir.

Yanıtlar:


11

Sorunuza bakarak, oturum verilerini izleyen merkezi bir oturum durumu sunucunuz (DB?) Var mı?

Ayrıca, form kimlik doğrulamasının vb. Çalışması için şifreleme için kullanılan makine anahtarını da senkronize etmeniz gerekir. Bu aynı zamanda oturum kimliğini de etkileyebilir, emin değilim.

IIS 7'de Makine Anahtarlarını Yapılandırma

Ayrıca, makineler arasındaki paylaşılan yapılandırmayı kullanmalısınız, sorunu farklı makine anahtarlarıyla çözebilir.

Web Sunucusu Çiftliği için IIS Yapılandırma Eşitlemesi?

EDIT: Site kimliğini değiştirdiğinizde, Web kökünün değişip değişmediğini görmek için IIS yöneticisini yeniden başlatmayı denediniz mi? Belki yapılandırma kimliğe bağlıdır, yani kimlikteki bir değişiklik belge kökü vb.


Jishi fikirleri için teşekkürler ama zaten web.configs içindeki machineKey'i senkronize etmiştim. Web sunucularındaki siteleri tamamen kaldırmak ve yeniden yapılandırmak zorunda kalmadan gerçekten bir sitenin IIS Örnek Kimliğini değiştirmenin bir yolunu arıyorum sanırım.
James McCormack

Site kimliğini değiştirdiğinizde, web kökünün değişip değişmediğini görmek için IIS yöneticisini yeniden başlatmayı denediniz mi? Belki yapılandırma kimliğiyle bir değişiklik de değiştirir vb belge kök gibi çok ırkı kimliği anlam bağlanır
Jishi

1
Evet, hepsi bu! IIS hizmetini yeniden başlatmayı unuttum (komut satırı iisreset / restart). Bundan sonra iyi çalıştı! Lütfen cevabınızı bu bilgilerle güncelleyin ve size Kabul Edilen Cevabı vereceğim.
James McCormack

Yapılan anlaşma. Senin için çalışmasına sevindim.
jishi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.