程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> asp.net 虛擬主機時常出現MAC驗證失敗錯誤之解決方法

asp.net 虛擬主機時常出現MAC驗證失敗錯誤之解決方法

編輯:ASP.NET基礎
出現錯誤:
“/”應用程序中的服務器錯誤。
--------------------------------------------------------------------------------

驗證視圖狀態 MAC 失敗。如果此應用程序由網絡場或群集承載,請確保 <machineKey> 配置指定了相同的 validationKey 和驗證算法。不能在群集中使用 AutoGenerate。

說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。

異常詳細信息: System.Web.HttpException: 驗證視圖狀態 MAC 失敗。如果此應用程序由網絡場或群集承載,請確保 <machineKey> 配置指定了相同的 validationKey 和驗證算法。不能在群集中使用 AutoGenerate。

源錯誤:


只有在調試模式下進行編譯時,生成此未處理異常的源代碼才會顯示出來。若要啟用此功能,請執行以下步驟之一,然後請求 URL:

1. 在產生錯誤的文件的頂部添加一條“Debug=true”指令。例如:

  <%@ Page Language="C#" Debug="true" %>

或:

2. 將以下的節添加到應用程序的配置文件中:

<configuration>
   <system.web>
       <compilation debug="true"/>
   </system.web>
</configuration>

請注意,第二個步驟將使給定應用程序中的所有文件在調試模式下進行編譯;第一個步驟僅使該特定文件在調試模式下進行編譯。

重要事項: 以調試模式運行應用程序一定會產生內存/性能系統開銷。在部署到生產方案之前,應確保應用程序調試已禁用。

        

 

 

解決方法:因為.NET在對客戶端數據與服務器間傳送過程中,需要對數據進行加密與解密,而加密與解密算法可以在web.config裡進行配置,在web.config中,validationKey和decryptionKey的默認值是AutoGenerate,由系統隨機生成密鑰,如果在本地或者使用的是獨立主機通常不會有什麼問題,但是使用虛擬主機,一台服務器上有多個虛擬主機存在時就會出現以上問題,MSDN中也特別指出不能在群集中使用 AutoGenerate應該指定固定的密鑰值,這就需要在web.config中添加關於machineKey的配置項,並手動設置其中的密鑰值,這裡請注意,不同加密算法對於密鑰的最大字符長度是不同的,在這裡能夠使用的有AES,DES,3DES,SHA1,MD5,我只知道DES的密鑰字符長度為16,3DES長度為48,手動設置時密鑰長度必須等於其最大長度,否則會出錯!至於密鑰的16進制值可以隨便輸入。

具體操作方法如下:

找到網站運行根目錄下的web.config文件,如下圖加亮行所示加上相應的項。設置時,請自行修改KEY值,這關系到服務器的加密安全。圖片看不清晰請點擊圖片查看。

代碼:<machineKey validation="SHA1" validationKey="78EA3850338FBADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24AE12BC" />
圖片點擊可在新窗口打開查看

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved