這幾天幫忙解決了幾個VS.NET Debug上的小問題,特別拿出來分享一下:

1) 要Debug Localhost上的ASP.NET程式時,彈出一個跟Debugger Users群組有關的錯誤訊息,如下:

此時建議先檢查兩個地方: 1) IIS Web是否已停用匿名存取? 2) 測試時用的使用者是否為Debugger Users的成員?
這兩點都挺明顯的,並不難發現,比較煩的是第三種隱性的狀況,也就是其實與”Debugger Users”沒有關係,也並非真的權限不足,而是IE的自動登入沒有設妥。對第三種狀況來說,這個錯誤訊息”誤導”效果十足。
要檢查是否為自動登入問題,方法很簡單。先確認你的Debug StartPage URL,例如: http://localhost/myweb/test.aspx。接著在IE中輸入這個URL,此時若IE跳出來問Username/Password,就代表自動登入沒生效,也就是所謂第三種狀況。如果你確定已取消匿名存取,而且也開了整合式驗證,則可以看看是不是IE的進階設定被改了。如下圖:

2) 延伸以上的問題,若只能用自動登入啟動ASP.NET的Debug Mode,又要怎麼用其他身份登入做測試呢?
啟動Deugger後,它會咬住ASP.NET Web執行的Process(w3wp.exe on Windows 2003, aspnet_wp.exe on Windows 2000),此時該Process下的所有Web動作都受到監控,並不只限於VS.NET開出來的那個IE。了解了這個原理,大家應該想到解決方法了吧?
另開一個IE,用另一個身份連到同一Web就OK了! 甚至,我常常會留著這個IE開著,每次重新啟動Debugger後,再Refresh一次就可了囉!

Comments

# by ringman

好怪啊~我照著作還是會出現錯誤耶~ 我的環境是 VS2003 + WIN2003 Jeffrey 大大~我試著在IIS下建立專案的虛擬目錄發現是可以Debugger的;但是如果我自己在IIS建立一個站台,然後有 指定IP位指的進階網站識別(例:xxxx.myweb.com.tw),前提是xxxx.myweb.com.tw是有做用的,不過醬子在VS2003中..就不能Debug了~~錯誤訊息如同標題!!~

# by Jeffrey

to ringman, 不太明白,xxxx.yweb.com.tw就是你的VS.NET機器名? 還是遠端的另一台機器? 若是遠端機器,則該主機上面還要進行一些安裝及設定的步驟才可以支援遠端Debug。

# by Sophia

不太懂耶 如果ie已經設定自動login 不就是現在本機登入的使用者的身分嗎? 怎麼有辦法用另一個身分連到同一個web呢? 網頁還是會跳出windows認證的對話框嗎?

# by Jeffrey

to Sophia, 較常遇到的狀況是: User可能針對Local Intranet、Internet、Trusted Sites設定不同的自動登入原則。另外,想用另一身份連至同一個Web可以利用同一台機器的別名URL來產生區別。例如: 127.0.0.1, localhost, 對外IP, 機器名稱對IE來說,會產生四個不一樣的Session。:D

Post a comment