首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

解決 ASP.NET 進程帳戶無 IIS Metabase 讀取權限錯誤

     編輯:關於ASP.NET

錯誤訊息

存取 IIS Metabase 失敗
「用於執行 ASP.NET 的進程帳戶必須具有對 IIS Metabase (如 IIS://servername/W3SVC) 的讀取權限。
請參閱 https://support.microsoft.com/?kbid=267904。」

原因

安裝順序導致:先裝 .NET Framework,再裝 IIS。IIS 未為 ASP.NET 註冊對應的腳本對應與 Metabase 權限。

解決方法

方法一:aspnet_regiis.exe 重新註冊(推薦)

  1. 開啟命令提示字元 (管理員)。
  2. 切換至 .NET Framework 目錄:
    `cd C:\Windows\Microsoft.NET\Framework\v4.0.30319` (依版本調整)
  3. 執行:
    `aspnet_regiis -i`
  4. 此指令會:註冊 ASP.NET ISAPI、建立腳本對應、設定 Metabase 權限、安裝客戶端腳本庫。

方法二:Metaacl.vbs 腳本授權

  1. 下載 `metaacl.vbs` (Microsoft 官方提供)。
  2. 執行:
    `cscript metaacl.vbs`
  3. 此腳本專門授予 ASP.NET 進程帳戶 (通常是 `NETWORK SERVICE` 或 `IIS_IUSRS`) 讀取 Metabase 權限。

方法三:手動設定 Metabase 權限 (ADSUTIL)

cscript adsutil.vbs set /w3svc/NTAuthenticationProviders "NTLM,Negotiate"
cscript adsutil.vbs set /w3svc/AppPools/DefaultAppPool/identityType 3
// 詳細 ACL 設定較複雜,建議用前兩種

驗證方式

  • 瀏覽任意 `.aspx` 頁面,不再出現 Metabase 錯誤。
  • IIS 管理員 → 網站 → 屬性 → 主目錄 → 設定 → 對應,確認 `.aspx` 指向 `aspnet_isapi.dll`。

補充:IIS 7.0+ 整合模式

IIS 7 以上採用 `system.webServer/modules`、`handlers` 設定,Metabase 概念已由 `applicationHost.config` 取代。若遇類似權限問題,檢查應用程式池身分是否為 `ApplicationPoolIdentity`,並確認 `web.config` 中 `` 區段正確。

總結

安裝 IIS 前請先安裝 .NET Framework,或事後執行 `aspnet_regiis -i` 即可一勞永逸解決 Metabase 權限問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved