當您存取已啟用 ASP.NET 1.1 升級 ASP.NET 2.0 之後的 ViewState 的 ASP.NET Web 網頁時,可能會收到錯誤訊息

文章翻譯 文章翻譯
文章編號: 911722 - 檢視此文章適用的產品。
重要本文包含有關如何修改登錄的資訊。請確定您在修改之前備份登錄。如果發生問題,請確定您知道如何還原登錄。如何備份、 還原,及修改登錄的相關資訊,請按一下下列的文件編號,檢視 Microsoft 知識庫中的文件:
256986Microsoft Windows 登錄的描述
全部展開 | 全部摺疊

在此頁中

徵狀

您從 Microsoft ASP.NET 1.1 升級到 Microsoft ASP.NET 2.0 後某些 ASP.NET 架構應用程式可能無法正常運作。此外,當您存取已啟用的 ViewState 的 ASP.NET Web 網頁時,可能會收到下列錯誤訊息:
[InvalidOperationException: 這個實作不屬於 Windows 平台 FIPS 驗證的密碼編譯演算法]
System.Security.Cryptography.RijndaelManagedctor() +200 System.Web.configuration.MachineKeySection.ConfigureEncryptionObject() +2088
System.Web.configuration.MachineKeySection.EnsureConfig() +904
System.Web.configuration.MachineKeySection.GetEncodedData (位元組 [] buf、 位元組 [] 修飾詞、 Int32 開始、 Int32 & 長度) +88
System.Web.UI.ObjectStateFormatter.serialize(object stateGraph) +1320
System.Web.UI.util.SerializeWithAssert(IStateFormatter Formatter, object stateGraph) +248
System.Web.UI.HiddenFieldPageStatePersister.Save() +280
System.Web.UI.page.SaveAllState() +6488
+17240 System.Web.UI.page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
--------------------------------------------------------------------------------
版本資訊: Microsoft.NET Framework 版本: 2.0.50606.0 ; ASP.NET 版本: 2.0.50606.0

發生的原因

當下列情況成立時,就會發生這個問題:
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy
    登錄子機碼設為 1。
  • 處理檢視狀態資料時,ASP.NET 2.0 會使用 AES 演算法 RijndaelManaged 實作。已由國家標準與科技 (NIST) 中未被認證 ReindaelManaged 實作成與 [聯邦資訊處理標準 (FIPS) 相容。因此,AES 演算法不屬於 Windows 平台 FIPS 驗證的密碼編譯演算法。

其他可行方案

重要這些步驟可能會增加您的安全性風險。這些步驟也可能會使電腦或網路更容易遭受惡意使用者或惡意軟體 (例如病毒) 的攻擊。我們建議處理程序,本文將告訴您,若要啟用程式如同它們設計用來操作,或是實作特定的程式功能。進行這些變更之前,我們建議您先評估在特定環境中實作這個程序相關聯的風險。如果決定實作這個程序採用任何其他的適當步驟,以協助保護系統。建議您只有您真正需要此程序時,才使用此程序。

如果要解決這個問題,變更應用程式層級 Web.config 檔中的設定。請指定該 ASP.NET 使用三重資料加密標準 (3DES) 的演算法來處理檢視狀態資料。要這麼做,請您執行下列步驟:
  1. 如 「 記事本 」) 的以文字] 編輯器開啟應用程式層級 Web.config 檔。
  2. 在 Web.config] 檔案中找出 <system.web> 區段。
  3. 將下列程式碼加入 <machinekey> 到區段中 <system.web> 區段:
    <machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>
  4. 儲存 Web.config 檔案。
  5. 重新啟動 Microsoft 網際網路資訊服務 (IIS) 服務。執行此動作請在命令提示字元下執行下列命令:
    iisreset
重要理論上,3DES 演算法是較不安全,比 AES (Rijndael) 演算法。 我們建議您使用 AES 演算法,不論何時儘量保護您的系統。

其他相關資訊

如果要重現問題的步驟

警告如果您修改登錄不當使用 「 登錄編輯程式 」,或使用另一個方法,可能會發生嚴重的問題。這些問題可能需要重新安裝作業系統。Microsoft 無法保證可以解決這些問題。您必須自己承擔修改登錄所造成的風險。

您可以重現這個問題之前必須先設定
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy
為 1 以啟用 FIPS 相容演算法原則的登錄子機碼。

請遵循這些步驟,然後結束 「 登錄編輯程式 」:
  1. 按一下 [開始]、 按一下 [執行]、 輸入 regedit,然後按一下 [確定]]。
  2. 找出並按一下登錄中的下列機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy
  3. 編輯] 功能表上按一下 [修改]。
  4. 鍵入 [1,並按下 ENTER。
附註您必須重新啟動電腦,新設定才會生效。

如果要重現問題,請依照下列步驟執行:
  1. 在 Visual 的 Studio 2005 中按一下 [檔案] 功能表上的 [新網站] 範本,類型] 下按一下 [ASP.NET 的網站DriveLetter: \ Path \KB911722位置 方塊,然後再按一下 [確定]
  2. 在 [方案總管] 中 Default.aspx,] 上按一下滑鼠右鍵,然後按一下 [開啟舊檔]。
  3. 現有的程式碼取代下列 code.
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    	<title>Test Page for KB911722</title>
    </head>
    <body>
    <form id="Form1" runat="server" >
     <script language="C#" runat="server" > 
     public void Page_Load() 
     { 
     	Label1.Text = "EnableViewState attribute is set to " + Page.EnableViewState.ToString(); 
     } 
     </script> 
    
     <asp:Label id="Label1" runat="server" Text="text"></asp:Label>
    </form>
    </body>
    </html>
  4. 在 [偵錯] 功能表上按一下 [開始偵錯]。
您會收到 < 徵狀 > 一節所述之錯誤訊息。

啟用的效果的相關資訊之"系統密碼編譯: 使用 FIPS 相容演算法於加密雜湊,以及簽章 」 按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項在下列文件在 Windows XP 和更新版本的 Windows XP 中的安全性設定:
811833啟用的效果"系統密碼編譯: 使用 FIPS 相容演算法於加密雜湊,以及簽章 」 在 Windows XP 以及更新版本的安全性設定

屬性

文章編號: 911722 - 上次校閱: 2008年1月4日 - 版次: 3.2
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 2.0
  • Microsoft ASP.NET 1.1
關鍵字:?
kbmt kbtshoot kbprb KB911722 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:911722
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com