无法在Web服务器上启动调试,与Web服务器通信时出现身份验证错误

时间:2022-05-20 16:36:43

问题描述: 
我使用的是修改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 服务