無法在Web伺服器上啟動除錯,與Web伺服器通訊時出現身份驗證錯誤

老皆知發表於2014-01-21

問題描述: 
我使用的是修改hosts,模擬真實網址來進行除錯的。具體是這樣的:我修改hosts檔案,把某個域名,如www.163.com對映為127.0.0.1,然後在IIS資訊管理器中,建立一個網站,該網站的主機頭就是指向www.163.com 
這樣,在瀏覽器中輸入www.163.com時,就不會再去訪問網易的主頁了,而是訪問我本地的網站了。 
然後我用vs2008中文版,開啟我的網站專案,把除錯啟動路徑設定為www.163.com,於是我就可以去用www.163.com除錯我的程式了。 
如果我不使用hosts的模擬真實網址的方法,直接按F5進行除錯,那麼vs2008就會自動生成類似於http://localhost:2323/這種網址來進行除錯,這種網址不是我所需要的。 
下面描述問題的發生情況: 
使用www.163.com除錯我的網站程式,在vs2008未裝sp1前,按F5可以除錯。我以前用vs2005的時候,如果vs2005未裝vs2005的sp1,也能除錯,但是不論是vs2005還是vs2008,只要一裝上相應的sp1補丁,就不能再使用這種模擬真實網址的方式來進行除錯了,會報如下錯誤:“無法在Web伺服器上啟動除錯,與Web伺服器通訊時出現身份驗證錯誤”。 
注意事項: 
1)請一定要注意,不論vs2005,還是vs2008未裝sp1之是可以除錯的! 
2)我的除錯網址是模擬真實網址,如使用www.163.com去除錯,而不是用系統生成的帶有埠號的網址去除錯,這點是最大的區別,現在網路上的解決方法都不適合於我這種問題的解決方法。 
  另外,vs2005,或vs2008,在裝上sp1後,一樣還能使用埠號的網址去除錯! 
3)網路上的解決方法:如aspnet_regiis.exe -i, 如啟用windows整合,如設定目錄的角色可訪問性,象什麼“Network Service”等等設定可訪問性,這些方法通通不適合於解決本問題,因為我的問題是建立在模擬真實網址的基礎之上的!

解決方案:

方法 1: 禁用環回檢查  
請遵循以下步驟:1. 單擊 開始 , 單擊 執行 , 型別 regedit然後單擊 確定 。 
2. 中登錄檔編輯器, 找到並單擊以下注冊表項:  
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 
3. 右擊 Lsa , 指向 新建 , 然後單擊 DWORD 值 。 
4. 型別 DisableLoopbackCheck然後按 Enter。 
5. 右擊 DisableLoopbackCheck , 然後單擊 修改 。 
6. 在 數值資料 框中, 鍵入 1然後單擊 確定 。 
7. 退出登錄檔編輯器, 並重新啟動計算機。 
這種方法測試過可以 
方法 2: 指定主機名 
要指定主機名, 對映到環回地址並可連線到 Web 站點上, 請按照下列步驟:1. 單擊 開始 , 單擊 執行 , 型別 regedit然後單擊 確定 。 
2. 中登錄檔編輯器, 找到並單擊以下注冊表項:  
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 
3. 右擊 MSV1_0 , 指向 新建 , 然後再單擊 多字串值 。 
4. 型別 BackConnectionHostNames然後按 Enter。 
5. 右擊 BackConnectionHostNames , 然後單擊 修改 。 
6. 在 數值資料 框中, 鍵入主機名或主機名為站點位於本地計算機, 然後單擊 確定 。 
7. 退出登錄檔編輯器, 並重新啟動 IISAdmin 服務

相關文章