Asp.net

WebResource.axd 上的“填充無效且無法刪除”異常

  • November 21, 2008

我有一個在我們本地環境中執行良好的 ASP.NET 2.0 應用程序。當發佈到測試伺服器時,我們在伺服器上遇到間歇性錯誤。

這是最常見的:

填充無效且無法移除。說明:執行目前 Web 請求期間發生未處理的異常。請查看堆棧跟踪以獲取有關錯誤及其源自程式碼的位置的更多資訊。

異常詳細資訊:System.Security.Cryptography.CryptographicException: 填充無效且無法刪除。

源錯誤:

在執行目前 Web 請求期間生成了未處理的異常。可以使用下面的異常堆棧跟踪來辨識有關異常起源和位置的資訊。

堆棧跟踪:

[CryptographicException:填充無效且無法刪除。]

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[] 修飾符, Int32 開始, Int32 長度, 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 步驟, Boolean & completedSynchronously) +64

這發生在對特定 WebResource.axd 請求的請求上。

我們看到的另一個錯誤是:

**視圖狀態 MAC 驗證失敗。如果此應用程序由 Web Farm 或集群託管,請確保配置指定相同的 validationKey 和驗證算法。AutoGenerate 不能在集群中使用。**說明:執行目前 Web 請求期間發生未處理的異常。請查看堆棧跟踪以獲取有關錯誤及其源自程式碼的位置的更多資訊。

異常詳細資訊:System.Web.HttpException:視圖狀態 MAC 驗證失敗。如果此應用程序由 Web Farm 或集群託管,請確保配置指定相同的 validationKey 和驗證算法。AutoGenerate 不能在集群中使用。

發布表單時偶爾會發生此錯誤。

現在,在您介入並告訴我此錯誤的明顯(通常)答案之前,請考慮一下:

  • 應用程序部署到 IIS6 上的 Windows Server 2003
  • 它不在網路場上。這裡只使用了一個網路伺服器。
  • 應用程序池標識是一個自定義服務帳戶,我確實aspnet_regiss -ga <username>在伺服器上執行。沒有效果。

該錯誤是因為您的 appdomain 已被回收/重新啟動。當發生這種情況時,應用程序和機器密鑰設置為自動,它會改變。這會影響資源 url (.axd) 的 url 中資訊的解密。設置一個固定的機器密鑰將防止它再次發生。

請檢查此以獲取有關類似案例的更多資訊(解釋是視圖狀態驗證存在問題,但原因相同): http: //www.developmentnow.com/blog/InvalidViewstate+Or+Unable+To+驗證+數據+錯誤.aspx

我也想了很久。在我看到這個問題後,它又讓我想到了:這是企圖破壞我的 ASP.Net 站點的安全性嗎?…我剛剛回答的非常相似。我有一種感覺,它是在重新啟動某些東西,因為當我們發布了一些回收應用程序的東西時,日誌中顯示了錯誤,但我沒有任何其他來源說明它的關係(今天我在 invalidviewstate 上發現了這種情況,因為機器鍵更改:))

附言。上面終於在單個伺服器上解釋了它:)

引用自:https://stackoverflow.com/questions/309859