调试 Web 部件
发布日期: 6/1/2004 | 更新日期: 6/1/2004
Suraj Poozhiyil
Microsoft Corporation
2003 年 5 月
适用于:
Microsoft Windows SharePoint Services 2.0
Microsoft Visual Studio .NET
摘要:了解如何使用 Microsoft Visual Studio .NET 来调试现有的 Web 部件程序集。(5 页打印页)
本页内容
您可以使用 Microsoft Visual Studio .NET 来构建 Web 部件程序集,这些程序集与用托管代码编写的 ASP.NET 服务器控件程序集相同。编写这些控件之后,下一步是测试和调试它们。本文描述了如何将系统配置为调试自定义的 Web 部件项目。
前提条件
• | 熟悉 Microsoft Windows SharePoint Services 2.0 |
• | 了解如何创建 Web 部件 |
• | 熟悉 Web 部件的基础结构 |
• | 已完成要调试的 Web 部件项目 |
系统要求
要调试 Web 部件程序集,您需要:
• | Windows SharePoint Services 2.0 |
• | Visual Studio .NET(7.0 或 7.1 版) |
• | 对映射到运行 Windows SharePoint Services 的虚拟服务器的文件系统目录(例如,C:\Inetpub\wwwroot 及其子目录)的写入权限。 |
• | 调试 ASP.Net 进程的权限 |
首先启动 Visual Studio,加载您的项目,设置适当的文件,然后设置用于调试的 SharePoint 站点。
注 以下过程假设 Web 部件程序集使用默认的 SharePoint 站点进行调试。
设置用于调试的站点
1. | 单击“开始”,指向“所有程序”,指向“Microsoft Visual Studio .NET”,然后单击“Microsoft Visual Studio .NET”。 | ||||||||
2. | 在 Visual Studio .NET 中,单击“文件”,然后单击“打开”。 | ||||||||
3. | 浏览至要调试的 Web 部件项目,然后单击“打开”。 | ||||||||
4. | 右键单击项目名称,然后单击“属性”。 | ||||||||
5. | 在导航树中,双击“配置属性”。 | ||||||||
6. | 在“输出”下,验证“输出路径”的值是否与下行相匹配: 本地驱动器:\InetPub\WWWRoot\bin\ | ||||||||
7. | 确保在“安全控件”列表中启用了该 Web 部件程序集和类型。要进行此操作,请执行以下步骤:
| ||||||||
8. | 保存并关闭文件。 |
设置断点
• | 使用 Visual Studio.NET 打开自定义 Web 部件的代码文件。 |
• | 在其中一个自定义的 Web 部件文件中,右键单击要在其中添加断点的行,然后单击“插入断点”。例如,您可能希望在 RenderWebPart 方法中插入一个断点。 重复上述步骤,在该文件中所有适当的位置设置断点。 |
• | 重复第 1 步和第 2 步,在每个自定义的 Web 部件文件中设置断点。 |
在成功打开项目并设置适当的断点之后,下一步是附加到 W3wp.exe 进程。
附加到 ASP.NET 进程:
1. | 在默认的 SharePoint 站点上创建一个 Web 部件页。 | ||||||||||
2. | 将该 Web 部件添加到页面中。 | ||||||||||
3. | 将调试程序附加到 W3wp 进程。要进行此操作,请执行以下步骤: | ||||||||||
4. | 在 Visual Studio .NET 的“调试”菜单上,单击“进程”。
|
附加到 W3wp 进程之后,您可以对代码进行调试。为此,请使用 Internet Explorer 打开包含新 Web 部件的测试页。在该页面呈现时,控件会切换到 Visual Studio 调试程序(取决于断点的位置)。现在,您可以使用调试模式来检查 Web 部件的功能。
调试 Web 部件代码可以帮助识别潜在的代码错误,但是调试并不能解决所有潜在的问题。例如,当 Web 部件页引用的程序集找不到时,调试可能无法解决该问题。如果出现这种情况,您可以使用以下两个策略来解决该问题。
使用 CallStack 属性
Windows SharePoint Services 可替代 CallStack 属性,该属性位于 Web.config 文件中。CallStack 属性控制当 ASP.NET 处理向所有本地和远程客户端发送页面的请求时,如果发生系统级异常,是否显示调用堆栈和异常消息。在默认情况下,Windows SharePoint Services 禁用 CallStack 属性,并显示一组有限的异常以防信息泄漏。要在发生异常时接收调用堆栈和异常消息,请启用 CallStack 属性。
启用 CallStack 属性
1. | 在 Windows 资源管理器中,浏览至以下文件夹: 本地驱动器:\InetPub\WWWRoot\bin\ |
2. | 双击 Web.config 文件。 |
3. | 在 Web.config 文件中,搜索 元素。 |
4. | 在<SharePoint>元素中,找到<SafeMode MaxControls="50" CallStack="false"/> 标记并将其更改为<SafeMode MaxControls="50" CallStack="true"/> 。 |
5. | 保存并关闭文件。 |
现在,在发生异常时,您将收到 ASP.NET 异常消息和堆栈跟踪信息。
注 CallStack 属性可为所有的本地和远程客户端启用此功能。
使用 ASP.NET 中的跟踪功能
您可以使用 ASP.NET 中的跟踪功能来监视在其上编程的服务器的环境。您可以针对特定页面或整个应用程序使用跟踪功能。您无需为远程客户端启用跟踪功能,即可在本地服务器计算机上使用该功能。
在本地服务器上启用 ASP.NET 跟踪功能
• | 在 Windows 资源管理器中,浏览至以下文件夹: 本地驱动器:\InetPub\WWWRoot\bin\。 |
• | 双击 Web.config 文件。 |
• | 在 Web.config 文件中,搜索 元素。 |
• | 在 <system.web>元素中,添加下行: <trace enabled="true" pageOutput="true"/> |
• | 保存并关闭文件。 |
环境信息现在会出现在包括该 Web 部件的测试页面的底部。有关如何使用 ASP.NET 中跟踪功能的详细信息,请访问以下 MSDN 网站:.NET Framework Developer's Guide: ASP.NET Trace。
要使用远程计算机进行开发和调试,请执行以下步骤。
注 要执行以下步骤,您必须有一台运行 Visual Studio .NET 的客户端计算机 (Computer_A) 和一台运行 Windows SharePoint Services 的服务器计算机 (Server_B)。
1. | 在 Server_B 上,共享宿主 SharePoint 虚拟服务器的目录。在默认情况下,Windows SharePoint Services 虚拟服务器映射到以下目录: 本地驱动器:\InetPub\wwwroot | ||||||||||||||||||||||
2. | 确保您具有此目录及其子目录的读取和写入权限。 | ||||||||||||||||||||||
3. | 在 Server_B 上,共享 Microsoft.SharePoint.dll 文件所在的目录。在默认情况下,Microsoft.SharePoint.dll 文件位于以下目录中: 本地驱动器:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\ISAPI | ||||||||||||||||||||||
4. | 确保您具有此目录的读取权限。 | ||||||||||||||||||||||
5. | 在 Computer_A 上,执行以下步骤:
| ||||||||||||||||||||||
6. | 在 Server_B 上,安装并配置远程调试服务。 |
有关远程调试的详细信息,请访问以下 MSDN 网站:Visual Studio: Setting Up Remote Debugging。
您在调试或修改程序集时,可能会收到以下错误消息:
Unable to new file_name.dll after compilation.(编译后无法替换文件名.dll。)
如果 W3wp.exe 进程锁定了 InetPub\WWWRoot\bin 目录中程序集的旧副本,就可能出现此行为。要解决此问题,请使用任务管理器来结束 W3wp.exe 进程,重新编译该程序集,然后再重新执行该调试进程。
Windows SharePoint Services 的 Web 部件是 ASP.NET 服务器控件。因此, Web 部件的调试进程类似于 ASP.NET 服务器控件的调试进程。