在Visual Studio 2008/2010中,当网站需要进行web调试的时候,我们一般都是直接使用VS自带的Server进行调试,也就是直接F5就解决了问题,但并不是所有的问题都能在这种问题下解决,因此我们有的时候需要使用IIS作为Web Server来进行调试。使用IIS作为宿主的时候,很有可能不会像使用VS自带的Web Server调试来的顺利,而我最近的一次调试中就出现下面这个报错:
英文报错:Unable to start debugging on the web server.An authentication error occured while communicating with the web server.
中文报错:无法在WEB服务器上启动调试。
当然,也可能出现其他的错误,经过摸索,问题解决了,在网上也看到有很多人在使用IIS6/7进行调试的时候出现不能调试的情况,为了让有同样的问题朋友们能够有一个更简单的处理方式,我将可能出现问题的地方做了个初步汇编,如果出现不能使用IIS来调试Web程序时,可以按照这个步骤来检查下开发机器上的配置是否正确。
No1. IIS配置检查
要使用IIS来调试网站,自然要在IIS中配置好网站,具体的配置请参见IIS新建网站的配置说明,这里不赘述。为了保证网站能够正常运行,你可能需要关注网站的权限问题。在网站能够正常运行的情况下,却无法使用Visual Studio进行Web Debugging的时候,请检查下面配置:
- 网站配置项中,网站标签下的连接是否启用了保持HTTP连接项,IIS6的操作路径:
IIS6管理器中右键当前调试网站--属性--网站--连接--保持HTTP连接
- 检查是否启用Windows身份验证。IIS6路径:
IIS6管理器中右键当前调试网站--属性--目录安全--身份验证和访问控制--编辑--用户访问需经过身份验证--集成Windows身份验证
- 如果是ASP这样的网站也许你要启用在服务端进行ASP调试的选项,路径为:
IIS6管理器中右键当前调试网站--属性--主目录--应用程序设置--配置...--调试--调试标志--启用ASP服务器端脚本调试 && 启用ASP客户端脚本调试
- 启用IIS中ASP.NET的调试项,这项也可以从web.config中设置,路径为:
IIS6管理器中右键当前调试网站--属性--ASP.NET--Edit Configuration(编辑配置)--应用程序--公共编译、页和运行时设置--勾选:启用调试--确定
- 如果你是IIS7,可以尝试启用IIS7中的Class .NET AppPool,经典的.NET应用程序池,路径:
当前调试站点--高级设置--应用程序池--Class .NET AppPool(经典模式)
上述问题配置配置如果设置之后,还是无法正常使用IIS调试VS中的Web程序,那么你可能还需要检查。
No2. 注册表配置检查[1]
- 禁用环回检查,将DisableLoopbackCheck 注册表项值置为1,Mitchell自己在Windows2003的问题就是这个方法解决的,注册表路径:
开始--运行--输入:regedit--确定--路由到下面路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
--右键:Lsa--新建--DWORD值--键入:DisableLoopbackCheck--右键:DisableLoopbackCheck--修改--数值数据框输入:1--确定。
##注意:
操作后如果无法直接生效,可能需要重启系统。
- 指定主机名,将DisableStrictNameChecking注册表项值置为1,具体操作方法:
开始--运行--键入:regedit--确定--路由到下面注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
--右键:MSV1_0--新建--多字符串值--输入:BackConnectionHostNames--确定--右键:BackConnectionHostNames--修改--数值数据--输入本地网站的主机名(可多个)--确定--重启IISAdmin服务
No3. Visual Studio配置检查,此项是在打开Web应用程序的时候配置检查:
- 检查Web应用程序中web.config中的debug是否值为true:
<system.web>
<compilation debug="true">
<!--
注意,compilation中debug属性要设置为true
如果你没有设置true,在Debug模式下,启动调试,VS会提示你是否启用
这个配置和IIS中配置启用调试是相同的.
-->
</compilation>
</system.web>
一般检查完上面这些配置项,在Visual Studio中使用IIS调试应该就能正常进行了,如果还有问题,欢迎讨论。
附注:
[1]对于注册表设置项的操作可参见微软官方文档: http://support.microsoft.com/kb/896861