小事一件,不過前後已經遇到很多次(今天又發現一起),看來也算常見問題,索性整理一下我的處理心得給大家參考。

錯誤訊息如下:

中文版

無法存取 IIS Metabase。
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外詳細資訊: System.Web.Hosting.HostingEnvironmentException: 無法存取 IIS Metabase。
用來執行 ASP.NET 的處理序帳戶必須擁有 IIS Metabase (例如 IIS://servername/W3SVC) 的讀取權限。如需修改 Metabase 使用權限的詳細資訊,請參閱
http://support.microsoft.com/?kbid=267904

英文版

Failed to access IIS metabase.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.Hosting.HostingEnvironmentException: Failed to access IIS metabase.
The process account used to run ASP.NET must have read access to the IIS metabase (e.g. IIS://servername/W3SVC). For information on modifying metabase permissions, please see
http://support.microsoft.com/?kbid=267904.


常見情境:

  • 已經安裝好.NET Framework 2.0的機器,事後才加裝IIS
  • IIS被移除重裝過

一般來說,安裝.NET Framework 2.0時,若安裝程式偵測到機器上有IIS,會向IIS註冊以便能執行ASP.NET 2.0。若先裝了.NET 2.0才裝IIS,就漏掉這個一註冊ASP.NET程序了(不過就算沒註冊,IIS的應用程式選項裡還是可以看到ASP.NET 2.0,讓人誤以為ASP.NET 2.0已 裝好,又一個陷阱),必須手動執行,如下:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -i

(PS: 完全不知道上面這行在搞什麼飛機或是重註冊無效的朋友,可以試看看執行.NET 2.0修復)

本來只是個小問題,不過由於錯誤訊息給得不甚明確,又扯了一堆W3SVC, IIS Metabase看似可怕的名詞,最後還扯到了權限問題,應該嚇壞一堆裝好IIS正要埋頭開始學ASP.NET的熱血新人。網路上看到不少人問了這個問題,就用這篇文章讓Google查詢"無法存取IIS Metabase"的傳回結果多一則吧!


Comments

# by 效能狂

這是 windows 2003 server 預設沒裝 iis,卻有裝 .net 2.0 的錯。不像 windows 2000 server 預設有裝 iis,即無此問題。

# by 初心者

真是太感謝啦!!!!! 問題解決了,感恩!!!!

# by 皇影

經過黑暗大大解說後,果然清楚多了。 小弟正是先安裝.net framework2.0 後安裝iis 的受害者啊

# by x8051lnik

小的提供另一種解答,檢查目前使用的帳號是否有 %windir%\system32\intersrv存取權限, 會發現這個情況是因為客戶的安控在將電腦加入網域後, 需要跑reporting local mode報表, 使用的是非本機已授權使用IIS的帳號, 結果當然就是IIS直接秀出此訊息, 而且使用mmc管理IIS只會看到一片空白, 就是此情況的明顯症狀... 解決方式是登入本機的Admin帳號, 將網域的使用帳號加入到Admin群組, 問題就此迎刃而解 :)

# by Lin

你好,關於上面的解決方法幫了我大忙,不過想請版主大人更改一下。 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -i 改成 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 因為這個問題,讓我卡了10幾分鐘 ^^

# by Jeffrey

to Lin, 哈! 原來這種古代寫法會讓人誤會。請你跟我這樣做: 在【執行】輸入cmd按Enter,出現黑底白字的DOS Prompt視窗,在其中會看到C:\Users\YourAccount>(依作業系統不同,前方提示詞不同),然後輸入cd \windows\microsoft.net\framework\v2.0.50727按Enter,你就可以看到傳說中的C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>,此時再輸入aspnet_regiis -i,就組合出文中示意的指令。謝謝你的提醒,DOS操作已經愈來愈少人用,我下回會避用骨灰級玩家才看得懂的文言文。

# by walking0935

aspnet_regiis.exe -i前面那個\實在太重要了 感謝大大解決了我卡超久的問題

# by HsingYu

感謝!原來是安裝順序的問題!

Post a comment