同事遇到狀況,用aspnet_regiis加密web.config的ConnectionString區段,過程發生錯誤(錯誤訊息不可考),之後ASP.NET程式不管點選任何ASPX連結都呈現無法顯示(Hang住遲無回應)。

我找到Global.asax裡有段Application_OnStart涉及資料庫存取,懷疑它是導致所有ASPX都癱瘓的源頭。先跳過其中的邏輯,就進入下一關,得到以下訊息:

無法使用提供者 'RsaProtectedConfigurationProvider' 解密。來自這個提供者的錯誤訊息為: 無法開啟 RSA 金鑰容器。
Failed to decrypt using provider 'RsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened.

猜想這與先前加密設定過程出錯有關,我的計劃是先退回到原本設定前的狀態再做打算。決定砍掉重練---用aspnet_regiis -u / aspnet_regiis -i 重新註冊ASP.NET,或許可以洗掉不好的記憶(與開大水沖澡有異曲同工之妙)。

不幸地,解除並重新註冊ASP.NET並沒能解決問題。再追了一下,發現\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config的檔案時間是今天寫入的,意思是aspnet_regiis -i時並不會還原它到預設狀態。此時,我發現同一目錄下有個web.config.default,檔案大小與內容與web.config相近,八成是微軟留下來的還原用滴,那我就不客氣了,用web.config.default覆寫web.config,問題排除,收隊回家!


Comments

# by Will 保哥

怪了,什麼情況會更動到 \Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config 這個系統預設的設定檔??

Post a comment