早期跨平台需求驅動 Apache 搭配 mod_aspdotnet 運行 ASP.NET,但模組實作存在差異,導致行為與 IIS 不一致。開發者需在 Apache 環境偵錯驗證。本文詳述 ASP.NET 1.1 (VS.NET 2003) 與 2.0 (VS 2005) 在 Apache 上的偵錯流程差異與關鍵設定。
httpd.conf : Listen 8080)。mod_aspdotnet 模組已正確載入。Apache.exe (類型皆為 ".NET, Win32")。Apache.exe CPU 使用率上升,即為 mod_aspdotnet 宿主進程。.aspx.cs 或 .vb 原始碼檔。Apache.exe)。| 問題現象 | 可能原因 | 解決方法 |
|---|---|---|
| 無法附加任何 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 |
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>
在 Apache + mod_aspdotnet 環境偵錯 ASP.NET 的核心難點在於**識別正確的宿主進程**與**確保 Runtime 版本一致**。ASP.NET 2.0 / VS 2005 大幅簡化流程,無需開啟專案即可對單一檔案偵錯。掌握 httpd.conf 版本指定參數、Debug 版本編譯、遠端偵錯配置,即能在非 IIS 環境高效排除問題。