要開一個古早的ASP.NET 1.1專案,VS.NET 2003卻一直彈出以下的錯誤:

Unable to open Web project 'FE'. The file path 'C:\WWW\JurassicPark\FE' does not correspond to the URL 'http: //localhost:9999/FE'.  The two need to map to the same server location. HTTP Error 403: Forbidden.

Goggle了一下,有篇KB提到,這會發生在啟用SSL後,但我壓根沒設SSL,顯然不是KB所說的情境。看起來,這問題出在VS.NET 2003無法確證C:\WWW\JurassicPark\FE就是http: //localhost:9999/FE,用IIS Manager檢視設定,虛擬目錄的設定明明是正確的。有點膠著,那就呼叫茶包一哥Process Monitor出來辦案吧!

VS.NET 2003檢測實體目錄跟IIS目錄是否一致的手法在Process Monitor的透視下一覽無遺。原來,VS.NET 2003會在該目錄下寫入一個暫存檔名的HTML檔,再透過網站URL去存取,證實二者的映對關係。發現了這一點,就可以再從IIS Log中得到佐證:

2008-09-16 07:28:44 W3SVC609852739 127.0.0.1 GET /FE/vs162105643329956047_tmp.htm - 9999 - 127.0.0.1 Microsoft-Visual-Studio.NET/7.10.6030 403 6 0

HTTP 403.6? 這下子真相大白了!! HTTP 403.6 = Forbidden: IP address rejected。用IIS Manager一看,果然FE Virtual Directory當初為了測試設定只有特定IP可以存取,卻忘了設給127.0.0.1,因此用localhost連上時會傳回HTTP 403.6,導致了VS.NET 2003驗證網站位址失敗。

這個故事告訴我們:

  1. Process Monitor好威呀!
  2. 做測試亂改設定後,記得要立即還原,不要偷懶。
  3. 本案其實用IE先開一下http ://localhost:9999/FE就可以發現問題所在,用Process Monitor是大砲打小鳥。但,Process Monitor還是好威!!

Comments

# by Tom

從您這看到這麼多 process monitor 的使用經驗文章, 這東東真的是跩爆了, 真是感謝分享!

Post a comment