无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证

症状

在使用完全限定的域名 (FQDN) 或自定义主机标头浏览承载于运行 Microsoft Internet 信息服务 (IIS) 5.1 或更高版本的计算机上的本地网站时,可能会收到类似于以下内容的错误消息:
HTTP 401.1 - 未授权:登录失败
当网站使用集成身份验证并具有映射到本机环回地址的名称时,将出现此问题。

注意:仅当尝试直接在服务器上浏览网站时,才会收到此错误消息。如果从客户端计算机浏览网站,网站会正常运行。

此外,还在安全事件日志中记录了类似于以下事件消息的事件消息:此事件消息包括“登录进程”项的值中的一些奇怪字符:

事件类型:失败审核
事件来源:安全性
事件类别:登录/注销
事件 ID:537
日期:日期
时间:时间
用户:NT AUTHORITY\SYSTEM
计算机:Computer_Name
描述:登录失败:
原因:登录时出现错误
用户名:User_Name
域:Domain_Name
登录类型:3
登录过程:Ðùº
身份验证包:NTLM
工作站名:Computer_Name
状态代码:0xC000006D
子状态代码:0x0
调用方用户名:-
调用方域:-
调用方登录 ID:-
调用方进程 ID:-
传递服务:-
源网络地址:IP_Address
源端口:Port_Number

注意:有时,事件消息中出现的奇怪字符可能类似于以下字符:
Ðù²
。当您尝试在 Microsoft Visual Studio 2003 中调试 Microsoft ASP.NET 项目时,还可能收到类似于以下内容的错误消息:
Error while trying to run project:Unable to start debugging on the web server.You do not have permissions to debug the server. 

Verify that you are a member of the 'Debugger Users' group on the server.
注意:此错误消息中单词“Web”未采用首字母大写。

所发出的 Web 服务请求不会在 IIS 日志中产生 HTTP 401 消息。在使用 Web 服务的应用程序的错误事件的“说明”部分中可能会记录 HTTP 401 消息。例如,Microsoft Commerce Server 2002 可能会出现此行为。如果出现此行为,则这是 Microsoft Windows Server 2003 Service Pack 1 (SP1) 和环回检查安全功能所进行的更改的表现。

原因

如果安装 Microsoft Windows XP Service Pack 2 (SP2) 或 Microsoft Windows Server 2003 Service Pack 1 (SP1),则会出现此问题。Windows XP SP2 和 Windows Server 2003 SP1 包括一个环回检查安全功能,用于帮助防止计算机受到反射攻击。因此,如果所使用的 FQDN 或自定义的主机标头与本地计算机名称不匹配,则会出现身份验证失败。

替代方法

重要说明:此部分、方法或任务包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请一定严格按照下列步骤操作。为了获得进一步保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows XP 中备份和还原注册表


可使用两种方法解决此问题,请根据您的具体情况使用以下方法之一:

方法 1:禁用环回检查

第一种方法是通过设置 DisableLoopbackCheck 注册表项来禁用环回检查。

若要我们为您解决该问题,请转到“帮我修复此问题”部分。如果您想自己修复此问题,请转到“我自己修复此问题”部分。

帮我修复此问题

若要自动设置 DisableLoopbackCheck 注册表项,请单击“修复此问题”链接。单击“文件下载”对话框中的“运行”,然后按照修复此问题向导中的步骤执行操作。

修复此问题 
Microsoft Fix it 50306


注意:此向导可能只提供英文版本。但是,Windows 的其他语言版本也提供自动修复功能。

注意:如果您使用的计算机并未出现此问题,则可将自动修复功能保存至闪存驱动器或 CD 中,然后就可在出现此问题的计算机中运行该功能。

我自己修复此问题

若要自己设置 DisableLoopbackCheck 注册表项,请按照下列步骤操作:
  1. DisableStrictNameChecking
    注册表项设置为 1。 有关具体操作方法的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中的相应文章:
    281308 无法使用别名连接到基于 Windows 2000 或 Windows Server 2003 的计算机上的 SMB 共享 (EN)
  2. 依次单击「开始」、“运行”,键入 regedit,然后单击“确定”
  3. 在注册表编辑器中,找到并单击下面的注册表项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
  4. 右键单击“Lsa”,指向“新建”,然后单击“DWORD 值”
  5. 键入 DisableLoopbackCheck,然后按 Enter。
  6. 右键单击 DisableLoopbackCheck,然后单击“修改”
  7. 在“数值数据”框中,键入 1,然后单击“确定”
  8. 退出注册表编辑器,然后重新启动您的计算机。

方法 2:指定主机名

若要指定映射到环回地址并且可以连接到计算机上的网站的主机名,请按照下列步骤操作:
  1. DisableStrictNameChecking
    注册表项设置为 1。 有关具体操作方法的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中的相应文章:
    281308 无法使用别名连接到基于 Windows 2000 或 Windows Server 2003 的计算机上的 SMB 共享 (EN)
  2. 依次单击「开始」、“运行”,键入 regedit,然后单击“确定”
  3. 在注册表编辑器中,找到并单击下面的注册表项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  4. 右键单击“MSV1_0”,指向“新建”,然后单击“多字符串值”
  5. 键入 BackConnectionHostNames,然后按 Enter。
  6. 右键单击“BackConnectionHostNames”,然后单击“修改”。
  7. 在“数值数据”框中,为本地计算机上的网站键入一个或多个主机名,然后单击“确定”
  8. 退出注册表编辑器,然后重新启动 IISAdmin 服务。
posted @ 2012-07-26 11:13  Bodi  阅读(421)  评论(0编辑  收藏  举报