我的 Vista 64 安裝已久, VS2008+SP1 也已經安裝了很久, 印象中從未發生過無法 Debug ASP.NET 應用程式的狀況。但是在最近一次的 Windows 更新之後, 卻開始出現這個問題, 也就是在 VS2008 中, 按下 F5 之後, 在 IE 瀏覽器裡面出現類似「無法找到網頁」之類的錯誤...
我的 Vista 64 安裝已久, VS2008+SP1 也已經安裝了很久, 印象中從未發生過無法 Debug ASP.NET 應用程式的狀況。但是在最近一次的 Windows 更新之後, 卻開始出現這個問題, 也就是在 VS2008 中, 按下 F5 之後, 在 IE 瀏覽器裡面出現類似「無法找到網頁」之類的錯誤。
進 CMD 視窗中執行 ping localhost, 發現 localhost 的位址變成了 ::1 而不是 127.0.0.1。其實像 ::1 這樣的位址, 其實是 IPV6 的位址。但為什麼 localhost 會被解析為 ::1 而不是傳統的 127.0.0.1 呢?
我又回頭把無法正常運作的網站偵錯位址從 http://localhost:26347/MySite 改成 http://127.0.01:26347/MySite, 結果是正確的。也就是說, VS 本身並沒有問題, VS 內建的網站伺服器也沒有問題; 問題一定是出在站名的解析上面。像這種問題, 我一般都會馬上去檢查 C:\Windows\System32\Drivers\ETC\hosts 這個檔案。可是, 很奇怪的, 我在硬碟中卻找不到這個檔案! 我在 Total Commander 中使用它強大的檔案搜尋功能來尋找, 結果也一無所獲。
我以為是我把路徑記錯了, 但是在網路上找來找去, 所有人對這個檔案所提供的路徑都是一樣的, 但我偏偏在我的電腦中找不到, 甚至連 ETC 這個子目錄都沒有! 後來, 我找到一個方法, 就是以手動方式建立, 卻沒想到無法建立這個子目錄。
最後我不得不懷疑到 Total Commander 頭上去了。我改用檔案總管來開啟子目錄, 結果發現原來是有這個子目錄的, 但如果使用 Total Commander 來開啟, 就是看不到這個子目錄, 彷彿它根本不存在一樣! 所以硬碟中確實有這個子目錄, 只是因為某種原因 (我覺得應該是 Windows 對 Total Commander 把這個子目錄的存在刻意遮蔽了)。接著, 我以手動方式輸入 cd etc, 的確可以切換到這個子目錄裡面去。
我把 hosts 內容中 ::1 localhost 這一行註解掉之後, VS 終於可以正常執行了。