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

解決 HTTP 500.19 錯誤:定義了重複的節點 —— 應用程序池模式不匹配

     編輯:ASP.NET 基礎

錯誤現象

HTTP 錯誤 500.19 - Internal Server Error
無法訪問請求的頁面,因為該頁的相關配置數據無效。
詳細錯誤:定義了重複的節點

根本原因

應用程序池運行模式(Classic / Integrated)與 web.config 中的配置節不兼容。典型場景:

  • IIS 7+ 默認 Integrated 模式,要求 <system.webServer> 節點配置模塊/處理程序。
  • 舊項目 web.config 僅有 <system.web> 節點(<httpModules>、<httpHandlers>),且部署到 Integrated 池,IIS 會嘗試合並配置,導致「重複節點」衝突。
  • 反之,將 Integrated 模式配置部署到 Classic 池也會報錯。

快速解決:切換應用程序池模式

  1. 打開 IIS 管理器(inetmgr)。
  2. 選中網站 → 右鍵「管理網站」→「高級設置」。
  3. 「應用程序池」點擊「...」選擇 .NET v2.0 Classic(或 .NET v4.0 Classic)。
  4. 確定,重啟網站。

根治方案:遷移配置到 system.webServer

將 <system.web> 下的 <httpModules>、<httpHandlers> 遷移至 <system.webServer>:

<system.webServer>
  <modules>
    <add name="MyModule" type="MyNamespace.MyModule" />
  </modules>
  <handlers>
    <add name="MyHandler" path="*.my" verb="*" type="MyNamespace.MyHandler" preCondition="integratedMode" />
  </handlers>
</system.webServer>

並設置應用程序池為 Integrated(現代標準,性能更好、管道統一)。

其他常見 500.19 子錯誤

錯誤描述典型原因解決
無法讀取配置文件權限不足 / web.config 損壞 / XML 格式錯誤檢查 IIS_IUSRS 讀取權限、XML 格式
鎖定違規父級配置鎖定了節點(<section allowOverride="false">)在 applicationHost.config 解鎖,或移除子站點該節點
模塊/處理程序加載失敗DLL 缺失 / 版本錯誤 / 位數不匹配 (32/64bit)啟用「啟用 32 位應用程序」或部署正確架構 DLL

排查技巧

  • 瀏覽器訪問報錯頁面 → 「詳細錯誤」鏈接查看完整配置源碼與行號。
  • 命令行驗證:appcmd list config "SiteName" /section:system.webServer/modules
  • 啟用 失敗請求跟踪 (Failed Request Tracing) 記錄 500.19 完整堆棧。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved