2008-11-21 7 views
30

Yerel düzeyde iyi çalışan bir ASP.NET 2.0 uygulamasına sahibim. Bir test sunucusuna yayınlandığında, sunucuda aralıklı hatalar alıyoruz.WebResource.axd

İşte en yaygın:

Dolgu geçersiz ve kaldırılamaz. Açıklama: Geçerli web isteğinin yürütülmesi sırasında işlenmeyen bir özel durum oluştu. Hata hakkında ve kodda nereden kaynaklandığı hakkında daha fazla bilgi için yığın izlemesini gözden geçirin.

Exception Details: System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[CryptographicException: Padding is invalid and cannot be removed.]
System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) +1545747
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) +257
System.Security.Cryptography.CryptoStream.FlushFinalBlock() +30 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Boolean useValidationSymAlgo) +164
System.Web.UI.Page.DecryptString(String s) +83
System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +148
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +358 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64

Bu, belirli bir WebResource.axd isteğine yapılan bir istek üzerine olur.

Gördüğümüz başka hata şudur: Bir formu gönderirken

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

Bu hata bazen olur. Eğer atlamak ve bana bu hata bariz (olağan) cevabını anlatmadan önce

Şimdi, bu göz önünde bulundurun:

  • uygulama IIS6 Windows Server 2003 dağıtıldığı
  • Bir web üzerinde değil Çiftlik. Burada sadece bir web sunucusu kullanımda.
  • Uygulama havuzu kimliği özel bir hizmet hesabıdır ve sunucuda aspnet_regiss -ga <username> çalıştırdım. Etkisi yok.
+1

Bunun için net bir cevap ekledi, kontrol et :) – eglasius

+0

Henüz bir çözüm yok Ben? Bildirdiğiniz ilk hatanın 25 dakikasında 15 Exceptioneer raporum var. Rackspace * fx3.5 sp1'i yükledikten sonra dün gece yeniden başlatılacak * ve bunların bundan kaynaklandığını düşündüm. Ancak, sadece biletimize göre yeniden başlatmayı "unuttuklarını" öğrendim. İşte hatalarımızdan biriyle ilgili bir link - http://exceptioneer.com/Share/Summary.aspx?e5dca865-cb2c-4292-af3f-e9d645a081a7. –

+1

Bu sorunu hiç çözmedim. Sadece öncelik listemizin başında değildi. Şimdi farklı bir projedeyim, o yüzden ... bildiğim kadar yardım yok. –

cevap

24

Bunun nedeni, uygulama alanınızın geri dönüştürülmesi/yeniden başlatılmasıdır. Bu olduğunda uygulama ve makine anahtarı otomatik olarak ayarlanır, değişir. Bu, kaynak URL'lerinin (.axd) URL'sindeki bilginin çözülmesini etkiler. Sabit bir makine anahtarı kurmak, bunun bir daha gerçekleşmesini engelleyecektir.

(açıklama viewstate doğrulama ile ilgili bir sorun ile, ama neden aynı biridir), benzer bir durumda daha fazla bilgi için bu kontrol edin: http://www.developmentnow.com/blog/InvalidViewstate+Or+Unable+To+Validate+Data+Error.aspx

Ben de uzunca bir süre bu konuyu merak etmişti . Bu soruyu gördükten sonra tekrar bana aldım: Is this an attempt to break my ASP.Net site's security? ... Ben sadece çok aynı şekilde cevap verdim.Bir şeyin yeniden başlatılmasıyla ilgili olduğunu hissettim, çünkü uygulamayı geri dönüştüren bir şey yayınladığımızda hata günlüğüne çıktı, ancak ilişkisini belirten başka bir kaynağım yoktu (bugün bu durumu geçersiz machinekey değişikliği :))

Ps. yukarıda nihayet tek bir sunucuda açıklar :)

+0

Bazı araştırmalar yapacağım, ama bunun problem olduğunu düşünmüyorum. Bir sunucu, machine.config dosyasında belirtilen bir makine anahtarına sahipse, hiçbir zaman değişmemelidir. İpuçları için teşekkürler, ona bakacağım. –

+0

doğru, eğer makinenin anahtarını belirtirseniz, değişmeyecektir (bu, düzeltmek ama hemen hemen her kaynak, sadece çoklu sunucuya uygular/açıklar), sadece vurgu yaptığınız gibi, anahtar için otomatik kullandığınızı düşündüm. bir web çiftliğinde DEĞİLDİR. Burada sadece bir web sunucusu kullanımda. " ... – eglasius

+0

Bu soruna geri dönüp baktığımızda, bu büyük olasılıkla –

1

Bu sorun, bir sayfa tarayıcıda tam olarak yüklenmeden önce oluşturulduğunda görünür. this sorusuna bir göz atın.

+0

ikincil sorun için düşündüğüm şey bu, ancak rahat olmaktan daha sık oluyor. Bu, bizim durumumuzda çok daha ciddi olan ilk hatayı açıklamıyor. –

+0

HTTP veya HTTPS kullanıyor musunuz? –

+0

Tümü HTTP. [] –

0

Ben, ilk sorun için

, sana sorun düzensiz oluştuğunu görmeye ne noktasına biraz daha gibi görünüyor buldum. http://www.codeproject.com/KB/security/Cryptor.aspx#aes numaralı telefondan bunun tam bir açıklamasını bulabilirsiniz.

Gerçekten yapmanız gereken şey, RijndaelAlg.Padding öğesini PaddingMode.ISO10126, PaddingMode.PKCS7 veya PaddingMode.ANSIX923 olarak ayarlamaktır. Şifrelenirken ve şifresini çözerken aynı değeri kullandığınızda, bu 3 değerin herhangi biri çalışmalıdır. Diğer değerler bazı verilerle çalışacak, ancak tüm verilerle çalışmaz. Yukarıdaki URL nedenini açıklıyor.

Anlamadığım şey, Microsoft'un bazen çalışmayan veya en azından neden güvenilir bir seçenek için varsayılan olmadıklarını belirleyen seçenekler sunmasının nedenidir.

+0

Kendi başıma herhangi bir sıkıştırma veya şifreleme yapmıyorum, bu yüzden bu kafa karıştırıcı. Bu sadece çeşitli WebResource.axd URL'lerine yapılan taleplerde olur. –

+0

Herhangi bir üçüncü taraf bileşen kullanıyor musunuz? – JohnL