|
返回页首因果性调试:Web 服务客户端和 Web 服务之间的步骤无法从 Web 服务客户端到 Web 服务设置调试 默认设置不允许从 Web 服务客户端进入 Web 服务。它的运行方式类似 step-over。 ASPNET 辅助进程(aspnet_wp.exe 或 w3wp.exe)在“aspnet”或“network service”用户帐户之下运行,而这些帐户没有通过 DCOM 访问 MDM 的权限。因此,需要将这些帐户添加到 Debugger Users 组中。 启用 Web 服务模拟后,无法再使用因果性步骤。 使用“web.config”为 Web 服务启用模拟时,不能从 Web 服务客户端代码进入 Web 服务代码。因为,它的运行方式类似于 step over。 您需要执行以下操作来更正客户端和服务之间的步骤。 • 关闭 IIS 中的 Anonymous access。 •更改客户端代码,将凭据设置为 Web 服务,如下所示: •Service1 obj = new Service1(); •obj.Credentials = System.Net.CredentialCache.DefaultCredentials; 在此之后,您将能够从客户端进入 Web 服务。 这些操作是必需的,因为当您进入 Web 服务时,某些 .NET Framework 组件需要使用系统级调试器组件 (MDM) 来共同创建它。如果不能提供正确的凭据,则此步骤将失败。如果没有这些正确的凭据,“step into”的运行将类似于“step over”。 调试器挂起 如果 Web 服务客户端代码在 STA (Single Thread Apartment) 模型中运行,并且它在等待异步调用完成,如下所示: Service1 obj = new Service1();
System.IAsyncResult ar = obj.BeginHelloWorld(new System.AsyncCallback(Class1.Handle),obj);
while(ar.IsCompleted != true)
{
System.Threading.Thread.Sleep(1000);
}
则调试器将挂起。发生此挂起操作,原因在于调试器中的代码已锁定一个调试器组件。解决方案 1 是更改代码以使用与事件或 mutex 同步的线程。另一个解决方案是注销 csm.dll。第二个解决方案禁用 causality 步骤(从 Web 服务客户端代码到 Web 服务方法的步骤)。您可能需要手动连接 aspnet_wp.exe 才能调试 Web 服务。 返回页首远程调试无法查看远程机器上的任何进程 确保在远程机器上安装了 Remote full debug 设置,并且您是 Debugger Users 组的成员。 因 RPC 问题而无法连接到远程机器 以下信息摘自 Mike Clay 撰写的 KB 文章。 如果通过“Processes”对话框连接到远程机器上时看到以下错误消息: Error while trying to run project: Unable to start debugging on the
web server. Not enough storage is available to complete this operation.
或者在进行 ASP.NET 调试期间看到这一消息: Error while trying to run project: Unable to start debugging on the web
server. Unable to map the debug start page URL to a machine name.
则确保 RPC 在您的机器与远程机器之间正确运行。下面的行为可能导致 RPC 问题: • 通过防火墙进行调试。Microsoft 不建议或支持通过防火墙的远程 ASP.NET 调试。解决此问题最好的方式是,使用“终端服务”登录远程服务器并在本地进行调试。 •RPC 的一种常见故障是无力解析远程机器名。RPC 依靠名称解析在计算机之间通信。如果未能将远程服务器机器名解析为正确的 IP 地址,则可能发生错误。 •RPC 通信只能单向流动,另一个方向却不行。RPC 通信必须能够从用于调试的机器到达远程服务器,并从远程服务器返回用于调试的机器,这样才能成功进行远程调试。确保以双向方式启用 RPC 通信。 要分析 RPC,可以使用 RPCPing 工具。 远程调试工作组中的机器失败 当您的两台 Windows XP Pro 机器都不在域中但在工作组中时,将发生这种情况。在它们之间进行远程调试时,您根本无法访问远程机器。 在工作组环境中,您需要确保两台机器具有相同的用户帐户名和相同的密码。否则,DCOM 进行身份验证时将失败。 另外,在 Windows XP Pro 上,将 Sharing and security model for local accounts 的默认安全设置设置为现在允许共享。下面是更改此设置的步骤: 1. 运行管理员工具中的 Local Security Settings。 2. 选择 Security settings\Local policies\Security 选项。 3. 将 Network access : Sharing and Security model for local accounts 从 Guest only - local users authenticate as Guest 更改为 Classic - local users authenticate as themselves。 4. 重新启动计算机。 应该将此更改应用于进行远程调试的两台机器。 更改设置后,即可使用同一名称的用户帐户在两台机器上进行远程调试。请确保每台机器上的用户帐户都具有密码。在某些情况下,没有实际密码机器不能运行。 然而,因为更改了安全模型的默认设置,所以可能公开下面的内容: • 意外的文件共享 •意外的 DCOM 组件共享。 在进行这一更改之前,从远程机器到您的机器的任何种类的连接都是以 Guest 身份进行的;但更改后,他/她即可接受使用本地用户帐户的身份验证。因此,在调试案例中,如果将一个文件夹或 DCOM 对象共享出来,其他机器上的任何匹配用户(具有相同用户名和相同密码)都可能可以访问您的共享对象。 我极力建议,如果您要使用这一变通方法,则请确保所有用户帐户都具有强密码,否则应该设置一个网络孤岛来调试机器,以防止恶意攻击。
上一页 [1] [2] [C语言系列]NET 中C#的switch语句的语法 [系统软件]托拽Explore中的文件到VB.net的窗口 [系统软件]Boost库在XP+Visual C++.net中的安装 [常用软件]新配色面板:Paint.Net3.0RC1官方下载 [常用软件]用内建的“Net Meeting”聊天 [VB.NET程序]Henry的VB.NET之旅(三)—共享成员 [VB.NET程序]Henry的VB.NET之旅(二)—构造与析构 [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体 [VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET) [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
|