越過調試這道檻 ——ASP.NET無法調試問題剖析
使用VS.NET的朋友可能經常會遇到無法調試ASP.NET的情況,有些朋友給出了一些可行的解決方案。初步總結一下,大體包括以下幾個方面(請注意:這兒討論的都是關于本地調試的解決方案): - 確定當前用戶是否已經被加入到Debugger Users組 - 確定當前用戶是否具有Administrator權限 - Web Application項目屬性中“允許調試ASP.NET”屬性是否被設為了True。也可以通過修改Web.config文件的compilation元素的debug屬性為True來實現。 需要說明的是,本地調試ASP.NET應用程序需要的操作系統是Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Windows XP Professional 和 Windows Server 2003。也就是說,我們無法在Windows XP Home,WindowsMe 和 Windows98上進行調試工作。(廢話?) 一般情況下,按照上述的一些解決方案基本上就可以使用我們運行ASP.NET的調試工作了。實在有問題,通過嘗試使用.Net自帶的ASPNET_REGIIS.EXE重新配置一下IIS,應該就可以了。 不過,本文希望和大家討論一下,如何在沒有本機Administrator權限下進行ASP.NET的調試。初聽起來,是不是覺得沒有必要呀?但如果大家仔細想一想,就會認識到這樣做的必要性的。原因很簡單,在大多數管理比較正規的軟件公司,開發人員一般是不會被授予本機Administrator權限的,那么如何在沒有本機Administrator權限的情況下調試ASP.NET應用程序就成了首先需要解決的問題了。為此我查閱一些資料(主要是MSDN online),并從中總結出了一套可行的解決方案,希望與大家共享之。測試環境:Windows XP Professional SP1, Vistual Studio .Net 2002. 首先,將當前登錄的用戶加入到Debugger Users組中(此外,此用戶至少要屬于Users組。絕大多數情況下,開發人員會被授予Power Users權限)。順便說一下,如果希望此用戶可以維護Web虛擬目錄,則需要將此用戶添加到VS Developers組。當然,這與能否調試ASP.NET應用程序無關。 接著,根據微軟的說法,如果此用戶希望在Windows XP Professional下調試ASP.NET應用程序,還需要將此用戶加入到“作為批處理作業登錄”策略中(當然,支持調試ASP.NET的其它版本Windows不需要做此設置),這樣就可以進行調試了。可以在“控制面板->管理工具->本地安全設置”工具的“安全設置->本地策略->用戶權利指派->作為批處理作業登錄”部分加入此用戶。不幸的是,結果并不象微軟相關文檔所說的那樣,設置了這些后就可以進行調試。經過一段時間的研究,我從MSDN Online的一篇文章中找到了答案。相信大家都知道,在默認情況下,ASPNET_WP.EXE進程是以Web Server方式運行,其用戶名是ASPNET。在這種情況下,如何我們想對Web Application進行調試,就必須擁有本機Administrator權限。這就為什么我們至今還不能進行調試的原因。那到底該如何解決這個問題呢?.Net為ASP.NET用戶提供了另一種解決方案,我們可以讓ASPNET_WP.EXE以工作進程的方式運行在指定用戶下,此時,指定用戶只要是屬于Debugger Users組就可以對它進行調試了。終于看到勝利的曙光了。 那么,如何使ASPNET_WP.EXE運行在指定用戶帳號下呢?答案是,對machine.config文件的相關配置項進行配置就行了。以VS.NET2002為例,此文件位于C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\CONFIG中。我們要做的是,找到processModel配置項,修改userName和password屬性。注意,如果使用的是域用戶,請填入<domain>\username。然后,找到Temporary ASP.NET Files Properties目錄,此目錄與CONFIG目錄位于同一目錄下。在右鍵呼出的彈出菜單中選擇“屬性->安全->高級”,此時將彈出“Temporary ASP.NET Files Properties的高級安全設置”對話框。在“權限”標簽中,點擊“添加”按鈕將指定用戶添加下“權限項目”列表中。重啟計算機,大功告成。注意:上述操作需要有本機Administrator權限,這需要系統管理員予以支持。 感覺上,應該還是比較容易進行配置的。若有什么不足之處,請各位多多指教。
|