Asp.net The anti-forgery token could not be decrypted hatası

alattin (17125) 11 yıl önce sordu

Windows 2008 Server IIS 7.5 sunucumda Event Viewer içerisinde,  Asp.Net MVC web uygulamama ait aşağıdakine benzer uyarılar(warning) görüyorum.

Event message: An unhandled exception has occurred. 
Event Id: 1309
Process name: w3wp.exe 

 

Exception information: 
    Exception type: HttpAntiForgeryException 
    Exception message: The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster, ensure that all machines are running the same version of ASP.NET Web Pages and that the <machineKey> configuration specifies explicit encryption and validation keys. AutoGenerate cannot be used in a cluster.

"The anti-forgery token could not be decrypted." hatalarının sebebi nedir?

 

Toplam 1 cevap


alattin (17125) 11 yıl önce cevapladı

Uygulamanınızın  MachineKey'i   AutoGenerate olarak ayarlandıysa (eğer bir değişiklik yapmadıysanız varsayılan değer budur) uygulamamanız yeniden başladığında, AntiForgery için kullanılan doğrulama jetonlarınız (verification token) sıfırlanacak ve eskileri geçerli olmayacaktır. Bu esnada uygulamanızı kullanan kullanıcıların doğrulama jetonları  geçersiz olacaktır.

Uygulama restart olduğunda Asp.Net yeni MachineKey üretecektir. Bu sebepten daha önce üretilmiş jetonlar doğru deşifre edilemeyecektir.

Bu durumu düzeltmek için şunları yapmalısınız

  1. Asp.Net Uygulamanıza yeni statik MachineKey atayın. 
  2. Asp.Net web.config Statik MachineKey Nasıl oluşturulur? buradan öğrenebilirsiniz.
  3. Kullanıcılar uygulamanızı kullanıyorken uygulamanızı veya IIS'i yeniden başlatmayın. 

Asp.Net uygulamanızı yeniden başlatmanız gerekiyorsa web sitenizin rootuna app_offline.htm dosyayı ekleyin böylelikle uygulamanızı offline edersiniz, kullanıcılar en azından geçici bir sorun olduğunu anlayabilirler.