我是ASP.NET的新手。我最近从我的网站设置了自动发送的电子邮件,通知我未处理的例外情况。就在几个小时前的3分钟内,有10个未处理的异常,所有堆栈跟踪都相似。我不明白的错误信息中有很多,但我不喜欢这种看法。
以下是其中一封电子邮件:
An unhandled exception occurred:
Message: Padding is invalid and cannot be removed.
Stack Trace:
at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast)
at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
at System.Security.Cryptography.CryptoStream.FlushFinalBlock()
at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo)
at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType)
at System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
这是否企图侵入我的网站或其他内容?
非常感谢那些提供答案和评论的人,这些答案和评论指出了我正确的方向来获得这个例外的答案。这可能很难确定,特别是在Web场中没有出现时。
IE 5.5没有引起我之前想到的问题。
这不容易找到,但其中一位工作人员在我的网站主持人论坛上发帖提到了Viewstate错误的报告。原因归结于asp工作进程或服务器回收。
asp worker进程设置是指machine.config文件中的processModel元素。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/7w2sway1(VS.80).aspx。
建议的修复方法是在web.config文件中设置加密的machineKey。 Machine Key节点位于system.web元素中。
这很容易完成并且由于具有MachineKey Generator的方便的ASP.NETResources站点解决了这个问题。请参阅http://www.aspnetresources.com/tools/keycreator.aspx。
答案 0 :(得分:8)
当程序集资源处理程序获取无效请求时,抛出此异常。这不太可能与任何恶意活动有关;它通常是由服务器上配置不正确的机器配置引起的。
一些背景知识:
ASP.NET具有通过HttpHandler从程序集(dll)公开资源的内置机制。 JavaScripts和图像等资源可以作为文本存储在程序集中,并由浏览器通过.axd处理程序请求。但出于安全原因,处理程序不接受资源的纯文本位置,这可能会暴露有关代码如何工作的线索。相反,它使用服务器上的machine.config中的信息来加密资源的唯一标识符。请求资源时会抛出此异常,但是当服务器尝试解密所提供的标识符时,它会失败。
答案 1 :(得分:2)
错误是因为您的应用域已被回收/重新启动。当发生这种情况时,应用程序和机器密钥设置为auto,它会发生变化。这会影响资源网址(.axd)网址中信息的解密。设置固定的机器密钥可以防止它再次发生。
请检查以获取有关类似案例的更多信息(解释与viewstate验证有关,但原因是相同的): http://www.developmentnow.com/blog/InvalidViewstate+Or+Unable+To+Validate+Data+Error.aspx
聚苯乙烯。这解释了它在单服务器部署:) - 虽然两个多单服务器的解决方案是相同的,但通常只解释修复程序使所有服务器使用相同的机器密钥。
更新1:填充无效消息与css填充无关。如果它只发生在5.5上,很可能是webresource.axd的参数混乱了,就像这个问题:Invalid Webresource.axd parameters being generated。