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

Apache + mod_aspdotnet 偵錯 ASP.NET 1.1/2.0 完整指南

     編輯:關於ASP.NET

背景與動機

早期跨平台需求驅動 Apache 搭配 mod_aspdotnet 運行 ASP.NET,但模組實作存在差異,導致行為與 IIS 不一致。開發者需在 Apache 環境偵錯驗證。本文詳述 ASP.NET 1.1 (VS.NET 2003) 與 2.0 (VS 2005) 在 Apache 上的偵錯流程差異與關鍵設定。

前置條件

  • IIS 佔用 80 埠,Apache 設定為 8080 埠 (httpd.conf : Listen 8080)。
  • 專案在 IIS 上正常運行,且 VS IDE 能正常開啟方案。
  • Apache 虛擬目錄指向專案實體路徑,mod_aspdotnet 模組已正確載入。

ASP.NET 1.1 偵錯流程 (VS.NET 2003)

  1. 確認專案在 Apache (https://localhost:8080/...) 正常瀏覽。
  2. VS.NET 2003 開啟專案方案檔。
  3. Ctrl+Alt+P 開啟「附加至處理序」對話框。
  4. 勾選「顯示系統處理序」,列表中會出現**兩個** Apache.exe (類型皆為 ".NET, Win32")。
  5. 關鍵判斷技巧:開啟工作管理員,重新整理 Apache 網站頁面,觀察哪個 Apache.exe CPU 使用率上升,即為 mod_aspdotnet 宿主進程。
  6. 附加至該進程,設定中斷點,進行原始碼級偵錯 (Step Into/Out)。

ASP.NET 2.0 偵錯流程 (VS 2005) - 更簡單

  1. 專案在 Apache 正常運行。
  2. VS 2005 **無需開啟專案**,直接 File → Open → File 開啟目標 .aspx.cs 或 .vb 原始碼檔。
  3. Ctrl+Alt+P 附加至 Apache 進程 (同樣需識別正確的 Apache.exe)。
  4. 直接在開啟的原始碼檔設定中斷點即可偵錯,完全脫離 IIS 環境。

常見失敗原因與解決方案

問題現象可能原因解決方法
無法附加任何 Apache.exe未編譯 Debug 版本 (未產生 .pdb)專案屬性 → Build → 勾選 "Define DEBUG constant"、產生偵錯資訊 (pdb-only 或 full)
VS.NET 2003 找不到 Apache.exe機器同時安裝 .NET 1.1 與 2.0,mod_aspdotnet 預設載入 2.0 Runtime在 httpd.conf 指定版本:
AspNetVersion v1.1.4322
中斷點不命中 (空心圓圈)原始碼與執行組件版本不符重新建置專案,確認 Apache 虛擬目錄指向最新輸出目錄
偵錯時拋出檔案鎖定錯誤Apache 進程鎖定組件檔案偵錯前停止 Apache、複製組件至 Bin、重新啟動 Apache

httpd.conf 關鍵設定片段

LoadModule aspdotnet_module "modules/mod_aspdotnet.so"

AddHandler asp.net aspx ascx ashx asmx config

AspNetMount /MyApp "C:/Projects/MyApp"
Alias /MyApp "C:/Projects/MyApp"
<Directory "C:/Projects/MyApp">
    Options FollowSymLinks ExecCGI
    AspNetVersion v1.1.4322  <!-- 強制使用 .NET 1.1 -->
    <Files ~ "\.(aspx|asmx|ashx)$">
        SetHandler asp.net
    </Files>
</Directory>

進階:遠端偵錯設定

  1. 遠端機器安裝 Remote Debugging Monitor (msvsmon.exe),對應 VS 版本。
  2. 本機 VS → Tools → Options → Debugging → Remote Debugging,輸入遠端機器名稱/IP。
  3. 附加處理序時選擇「遠端 (Remote)」,輸入遠端 Apache 進程。

結語

在 Apache + mod_aspdotnet 環境偵錯 ASP.NET 的核心難點在於**識別正確的宿主進程**與**確保 Runtime 版本一致**。ASP.NET 2.0 / VS 2005 大幅簡化流程,無需開啟專案即可對單一檔案偵錯。掌握 httpd.conf 版本指定參數、Debug 版本編譯、遠端偵錯配置,即能在非 IIS 環境高效排除問題。

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