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

ASP.NET 開發常見三大錯誤與解決方案:IIS 識別、Web.config 重複、SQL 連線

     編輯:ASP.NET 基礎

錯誤一:IIS 無法識別 ASP.NET — 「名稱以無效字元開頭」

錯誤訊息

「名稱以無效字元開頭。處理資源 'https://localhost/...' 時出錯。第 1 行,位置: 2」

原因

ASP.NET 未向 IIS 正確註冊,常見於:

  • 先裝 IIS 再裝 .NET Framework
  • 多版本 .NET 共存導致對應關係錯亂
  • 手動修改 IIS 設定遺漏模組註冊

解決方案:執行 aspnet_regiis.exe 註冊

# .NET Framework 1.1
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i

# .NET Framework 2.0 / 3.0 / 3.5
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

# .NET Framework 4.0 / 4.5+ (32-bit)
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

# .NET Framework 4.0 / 4.5+ (64-bit) **關鍵**
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

注意:64 位元作業系統**必須執行 Framework64 版本**,否則 IIS 仍無法載入 64 位元模組。執行後 IIS 會重新啟動相關應用程式集區。

補充:缺少 EnvDTE 組件錯誤

錯誤:「未能載入檔案或組件 'EnvDTE, Version=8.0.0.0...'」

解決:搜尋 `EnvDTE.dll`、`EnvDTE80.dll`(通常在 `C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\`),複製至專案 `bin` 目錄。


錯誤二:Web.config 區段重複 — 「在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段」

錯誤訊息

「在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段是錯誤的。如果在 IIS 中沒有將虛擬目錄設定為應用程式,則可能導致此錯誤。」

原因

專案資料夾結構中存在**多個 `web.config`**,且子資料夾未在 IIS 中轉換為應用程式。典型情況:

  • 方案根目錄有 `web.config`,子專案資料夾也有 `web.config`
  • 誤將類別庫專案設為 Web 專案產生 `web.config`
  • 版本控制合併衝突產生重複設定

解決方案

  1. 檢視方案總管「顯示所有檔案」,搜尋所有 `web.config`
  2. 確認**只有網站根目錄**擁有 `web.config`
  3. 刪除或重命名多餘的 `web.config`(如改為 `web.config.bak`)
  4. 若子資料夾確需獨立設定,在 IIS 中將該資料夾「轉換為應用程式」

錯誤三:SQL Server 連線失敗 — 「提供者: SQL 網路介面, error: 26 - 找不到指定的伺服器/執行個體」

錯誤訊息

「在建立與伺服器的連線時出錯。在連接到 SQL Server 2005 時,在預設設定下 SQL Server 不允許遠端連線可能會導致此失敗。 (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)」

排查清單(依序執行)

  1. 確認服務啟動:服務管理員 (`services.msc`) → `SQL Server (SQLEXPRESS)` / `SQL Server (MSSQLSERVER)` → 狀態為「執行中」,啟動類型「自動」
  2. 啟用遠端連線:SQL Server 組態管理員 → SQL Server 網路設定 → `SQLEXPRESS` 協定 → TCP/IP 啟用、Named Pipes 啟用 → 重啟服務
  3. 防火牆開放埠:TCP 1433(預設執行個體)、動態埠(具名執行個體)、UDP 1434 (SQL Browser)
  4. 啟用 SQL Browser 服務:具名執行個體需 `SQL Server Browser` 服務執行中
  5. 連線字串正確性:
    • 本地預設執行個體:`Server=.;Database=MyDB;Trusted_Connection=True;`
    • 本地具名執行個體:`Server=.\SQLEXPRESS;Database=MyDB;Trusted_Connection=True;`
    • 遠端:`Server=192.168.1.100,1433;Database=MyDB;User Id=sa;Password=****;`
  6. 使用 UDL 檔案測試:建立 `test.udl` → 雙擊開啟 → 提供者選 `Microsoft OLE DB Provider for SQL Server` → 輸入連線資訊 → 「測試連線」

外部應用組態工具

執行 `cliconfg.exe`(用戶端網路公用程式)→ 別名頁面 → 新增別名驗證協定與伺服器名稱解析。


總結:預防勝於治療

  • **安裝順序**:先 .NET Framework,再 IIS,或安裝後執行 `aspnet_regiis -i`
  • **專案結構**:單一 `web.config` 原則,子專案勿產生 Web 設定檔
  • **連線字串**:集中管理於 `web.config` ``,使用 `ConfigurationManager.ConnectionStrings` 讀取
  • **部署檢查清單**:建立標準化部署驗證步驟,包含上述三大項
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved