(转)无法在 Web 服务器上启动调试
当试图对运行在 Web 服务器上的应用程序进行调试时,有时可能会得到此错误信息:
Unable to start debugging on the Web server
如果您的消息更长一些,则会用这个消息的子主题覆盖您的消息。
如果遇到此错误,则需要考虑几个问题。首先转到“要检查的内容”,然后根据硬件和软件配置考虑其余几项内容。
请尝试检查下列内容:
-
检查 ASP.NET 或 ATL Server 的设置过程。有关更多信息,请参见为调试 ASP.NET 应用程序做好准备。
-
您是否具有进行调试所必需的访问特权?有关更多信息,请参见 ASP.NET 调试:系统要求中的“安全要求”一节。
-
您是否正在运行一个允许 Visual Studio 调试器自动附加到 Web 应用程序的 Windows 版本?如果不是,则需要启动应用程序而不调试,然后手动附加到它。(有关更多信息,请参见“手动附加”和 ASP.NET 调试:系统要求。)
-
您的 Web 应用程序是否具有 Web.config 文件?
-
Web.config 文件是否通过将 debug 属性设置为 true 而启用了调试模式?有关更多信息,请参见如何:为 ASP.NET 应用程序启用调试。
-
Web.config 文件是否包含任何语法错误?您可以通过运行 Web 应用程序而不调试来检查是否存在语法错误。(从“调试”菜单中,选择“开始执行(不调试)”。)如果在 Web.config 中存在语法错误,则会显示详细信息。
-
-
您是否是通过指定特定的 IP 地址(如 100.20.300.400)而创建了项目?调试 Web 服务器要求 NTLM 身份验证。默认情况下,IP 地址被假定为 Internet 的一部分,而在 Internet 上不进行 NTLM 身份验证。若要更正这一问题:
-
创建项目时,指定 Intranet 上计算机的名称。
- 或 -
-
将 IP 地址 (http://100.20.300.400) 添加到您的计算机上的受信任站点列表中。(从 Internet Explorer 的“工具”菜单中,选择“Internet 选项”,然后选择“安全”选项卡)。
是否在服务器计算机上注册了必要的扩展?如果尚未注册,请按下面过程中介绍的方法重新注册 ASP.NET。
-
-
是否在安装 Visual Studio 后,将 IIS 安装到运行 Visual Studio 的本地计算机上?IIS 应在安装 Visual Studio 之前安装。如果在之后安装,则可能需要重新注册 ASP.NET。
重新注册 ASP.NET
-
从命令提示窗口中,运行下列命令:systemroot\Microsoft.NET\Framework\versionNumber \aspnet_regiis -i
注意 对于 WindowsServer 2003,可以使用“添加/删除程序”控制面板安装 ASP.NET。
-
插入 Visual Studio 光盘,运行安装程序,然后选择“修复/重新安装”。此步骤将创建 wwwroot$ 共享目录并添加适当的权限。
-
-
是否正确地指定了项目起始页的 URL?扩展名和项目目录是否正确?
-
如果您在 Web 服务器上安装了两个版本的 .NET Framework,则请验证是否在 IIS 设置中设置了正确的版本。有关更多信息,请参见如何:验证 IIS 属性设置。
如果 Web 应用程序在远程服务器上,请首先确保仔细检查了“要检查的内容”中的各项内容。接下来请检查以下内容:
-
运行 IIS 服务器的计算机是否已安装 Visual Studio 远程组件?有关更多信息,请参见为调试 ASP.NET 应用程序做好准备。
-
您是否具有进行调试所必需的访问特权?有关更多信息,请参见 ASP.NET 调试:系统要求中的“安全要求”一节。
-
您是否正在使用“终端服务器”尝试调试远程计算机上的 Web 应用程序?在 Windows XP 下,支持使用“终端服务器”对本机 Web 应用程序进行远程调试。而在 Windows 2000 或 Windows NT 下则不支持。
如果 Web 应用程序存储在 Visual SourceSafe 中并且使用 FrontPage 服务器扩展作为它的 Web 访问模式,则请检查以下内容:
-
Visual SourceSafe 是否与 FrontPage 服务器/Web 服务器位于同一台计算机上?如果是,则可以使用“集成身份验证”进行调试。若要检查“集成身份验证”设置,请参见过程“检查 Web 应用程序的 IIS 安全设置”,它位于主题如何:验证 IIS 属性设置中。
有时,服务器会因语法错误而无法处理调试请求。machine.config 文件中的错误可能导致请求语法出错。如果 machine.config 文件将 maxRequestLength 设为一个异常巨大的值(例如 40,960,000),则会发生此错误。
如果按照这些疑难解答步骤执行了相应操作,而在开始调试时仍然收到错误信息,则可能需要尝试通过手动附加来调试应用程序。
手动附加
-
启动应用程序而不调试。(从“调试”菜单中,选择“开始执行(不调试)”。)
-
确定适当的 IIS 进程或辅助进程的名称。默认情况下,ATL Server 应用程序名为 inetinfo.exe。若要确定 ASP.NET 辅助进程的名称,请参见如何:查找 ASP.NET 进程的名称。
使用下面的过程之一来确定 ASP.NET 或 ATL Server 应用程序在哪个进程下运行。
-
附加到前一步骤确定的进程。有关更多信息,请参见如何:附加到运行进程。
检查 ASP.NET 应用程序在哪个进程下运行
-
使用 Visual Studio 或其他文本编辑器打开应用程序的 machine.config 文件。
-
在 system.web 节点内,查找 ProcessModel 节点,然后检查它的 enable 属性:
如果 enable 设置为 TRUE,则应用程序在 aspnet_wp.exe 或 w3wp.exe 下运行。(这也是默认设置。)
如果 enable 设置为 FALSE,则应用程序在 inetinfo.exe 下运行。
检查 ATL Server 应用程序在哪个进程下运行
-
在解决方案资源管理器中,右击项目名称,然后从快捷菜单中选择“属性”。
-
在“<项目> 属性页”对话框中,打开“Web 部署”文件夹,然后选择“常规”。
-
查看“应用程序保护”设置。
如果此设置为“低(IIS 进程)”,则应用程序在 inetinfo.exe 下运行。
如果此设置为“中等(池)”,则应用程序在 dllhost.exe 进程下运行(与其他放入池中的 ATL Server 应用程序相同)。
如果此设置为“高(独立)”,则应用程序在 dllhost.exe 进程下运行(与其他 ATL Server 应用程序不同)。
-
单击“确定”关闭“<项目> 属性页”对话框。