2016-03-28 37 views
0

"Zaman aşımını" sürdüren ve yönetici alanında bilgileri doldururken kullanıcıyı düzenli aralıklarla kaydedecek bir istemci için bir web formları projemiz var. Biz bir önceki proje üzerinde benzer bir şey koştu ama bununla kolayca geçici başardık:ASP.NET 4.5 kalıcı tanımlama bilgileri düzgün çalışmıyor

if (RememberMe.Checked) 
{ 
    FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket((string)r["Login"], true, (90*24*60)); 
    string encryptedTicket = FormsAuthentication.Encrypt(authTicket); 
    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 
    cookie.Expires = authTicket.Expiration; 
    HttpContext.Current.Response.Cookies.Set(cookie); 
    Response.Redirect(FormsAuthentication.GetRedirectUrl((string)r["Login"], false), true); 
} 
else 
{ 
    FormsAuthentication.SetAuthCookie((string)r["Login"], false); 
    FormsAuthentication.RedirectFromLoginPage((string)r["Login"], false); 
} 

Ben yeni bir proje üzerinde aynı yaklaşımı çalışınca, fakat bir etkisi olmadı. Anlayabileceğim tek fark (birçok yeniden yazma ve ayarlamadan sonra) yeni projenin .NET 4.5 kullanıyor olması ve çalıştığı .NET 4.0 idi. Bu 4.5'da bir hata mı ve başka birinin buna rastlaması mı gerekiyor?

Yeni projeyi, sadece görmek için 4.0'a düşürdük ve herhangi bir ek kod değişikliği olmaksızın mükemmel çalışıyor gibi görünüyor. Aramamın çoğu, neredeyse yaptığım gibi görünen bir kod örneği veren cevaplarla sonuçlanıyor. başkası aynı sorunla çalışır durumda

cevap

1

, burada çözüm buldu: bu uygulama kendi machinekey var olmadığı için

, bu sunucunun machine.config birini miras edildi. Bu, birden fazla müşteri tarafından paylaşılan bir sunucu için olduğundan otomatik olarak oluşturulacak şekilde yapılandırıldı ve hepsi aynı anahtarı paylaştığında büyük bir güvenlik hatası olurdu. Anahtar otomatik olarak üretildiğinden, uygulama her sıfırlandığında ve önceden dağıtılmış Form Kimlik Doğrulaması çerezlerinin şifresini çözmediğinde de yeniden üretiliyordu.

Uygulamam için bir machineKey ayarlamam gerekiyordu, bu yüzden bir anahtar oluşturdum ve uygulamanızın web.config'ında bir machineKey etiketine koydum ve voila, işe yaradı!

o eski sitede çalışır nedeni oldukça sabit trafik ve muhtemelen makine anahtarı yeniden oluşturmak için yeterince uzun boşta olmadığı muhtemelen gerçektir. Ancak, yeni sitede bir makine anahtarı kurduktan sonra mükemmel bir şekilde çalıştı: https://blogs.msdn.microsoft.com/amb/2012/07/31/easiest-way-to-generate-machinekey/

+0

Teşekkürler! Bu, uygulama havuzunun geri dönüştürüldükten sonra kalıcı çerezlerimin web uygulamam tarafından neden okunmadığını anlamanıza yardımcı oldu. Hiç kimse, kalıcı çerezlerin daha sonra okunması/şifresinin çözülmesi için dinamik olmayan bir makine anahtarı ayarlamanızın * gerekmediğinden hiç de garip değildir. – AbeyMarquez