(daha bağlam için aşağıdaki soruya bakın):<machineKey decryptionKey = "AutoGenerate" ... IIS tarafından yok sayılıyor. önceki oturumun çerezleri geçersiz olmaz
web.config'de
<machineKey
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"/>
App yeni machineKey autogenerate için başarısız kaldığı herhangi durumlar var mı Havuz geri dönüşümü mü? Gördüğüm davranış budur ...
Bir MVC uygulamasında standart ASP.NET FormsAuthentication kullanıyorum. Bir kullanıcıyı FormsAuthentication.GetAuthCookie
kullanarak oturum açıyor ve kalıcı bir tanımlama bilgisi kullanmıyorsam (yetkili durumumu hatırlamak için tarayıcının oturumuna bağlı olarak), oturumun bu çerez hakkındaki bilgisini geçersiz kılmak için IIS Uygulama Havuzu'nu geri dönüştürmeyi beklerim. kalıcı çerezleri olmayan tüm kullanıcıları kapat.
Bu DOES, IIS yüklemelerimden birinde (XP) gerçekleşir, ancak farklı bir IIS yapılandırmasında (Sunucu 2K3) FormsAuthentication tanımlama bilgisi (".ASPXAUTH" standart adı altında) geçerli kalır ve kullanıcıyı yetkilendirmeye devam eder.
Bunun neden olduğunu veya bu yapılandırmanın hangi yapılandırmayı denetlediğini bilen var mı?
Açıkçası, uygulama havuzunun geri dönüştürülmesinin, tarayıcının .ASPXAUTH çerezini (tarayıcımı kapatmadığım ve çerezin süresi dolmadığı sürece) göndermeye devam edip etmediği konusunda hiçbir kontrolü yoktur. IIS durumunda ben Application_BeginRequest
olay sırasında Request.Cookies
gelen çerez görebilirsiniz düzgün bir recycle sonra kimlik yalanladı yüklemek yılında
... ama Global.asax.cs mevcut sonraki olaya kontrol hamle kez
(Application_AuthenticateRequest
), çerez Request.Cookies
koleksiyonu koleksiyonundan kaldırılmıştır.
Neden bu, hem IIS/ASP.NET yapılandırmaları için geçerli olmaz? Bu soruyu oluşturan daha basit bir yolu net değil durumda
: Ben Application_BeginRequest
den Application_AuthenticateRequest
için, tek bir istekle, adım ne zaman
Neden {System.Web.HttpCookie}
den HttpContext.Current.Request.Cookies[".ASPXAUTH"]
değişiklik null geliyor?
Daha ayıklama bilgisi:
Ben I önce talebi sırasında sonra global.asax.cs en FormsAuthentication_OnAuthenticate olayına aşağıdaki kodu ...
var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
var val = cookie.Value;
try
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(val);
}
catch (Exception)
{
}
}
... eklerseniz IIS Uygulama Havuzu'nu geri dönüştürün, hiçbir özel durum yakalanmaz. IIS Uygulama Havuzu'nu geri dönüştürdükten sonra, aynı .ASPXAUTH çerezi tarayıcıdan gönderildiğinde, bir Şifreleme özel durumu yakalanır ("Dolgu geçersiz ve kaldırılamaz.")
Neden bu?
Biri ASP'yi kullanmak üzere yapılandırılmış.NET State Service, oturumu prog yerine saklamak için mi? – devstuff
İyi düşünce - hayır, ikisi de InProc'u maalesef kullanıyorlar. – kamens