SharePoint 解决方案疑难解答
当使用 Visual Studio 调试器调试 SharePoint 解决方案时,可能会出现以下问题或警报。 有关更多信息,请参见Debugging SharePoint Workflow Solutions。
本主题包括下列各节。
- 项目和项目项名称中的字符限制
- 创建自定义字段时出错
- 新的非英语网站定义在部署后未出现在网站创建页中
- 在干净系统上部署工作流项目时出错
- 调试时用户必须在浏览器中刷新应用程序页才能查看更新的图像
- 错误:网站位置无效
- 事件接收器项目中不会发生网站删除 Web 事件
- 更改业务数据连接模型项目中的标识符名称后出现部署错误
- 尝试在 SharePoint 中查看可视 Web 部件时出错
- 运行包含任务窗体字段的已导入可重用工作流时出错
- 运行重命名导入列表实例时出错
- 由 IIS 终止的 SharePoint 调试会话
- 自动收回功能会在 SharePoint 中的保留孤立的列表实例
- 原始 SharePoint 解决方案将由导出版本替换
- 开始调试时出错
- 相关主题
项目和项目项名称中的字符限制
在 SharePoint 2010 中,项目和项目项名称只能包含部署路径中有效的字符。 不允许使用其他字符。
错误消息
“字符无效”错误消息。
解决方法
对于 SharePoint 项目和项目项名称,仅使用以下字符:
字母数字 ASCII 字符
空格
句点 (.)
逗号 (,)
下划线 (_)
短划线 (-)
反斜杠 (\)
在打包项目时,验证规则将验证要部署的每个文件的“Deployment Path”属性是否只包含上述有效字符。
创建自定义字段时出错
Visual Studio 2010 中的自定义字段是使用 XML 定义的。 如果未使用特定格式定义或引用字段,则会出错。
错误消息
打包时出现的“无效字符”错误消息。
解决方法
字段定义的 ID 必须是由大括号括起来的 GUID。 例如,
<Field ID="{5744d18c-305e-4632-8bd1-09d134f4830d}"
Type="Note"
Name="PatientName"
DisplayName="Patient Name"
Group="A Custom Group">
</Field>.
内容类型中的字段引用必须用空元素格式 (<FieldRef />) 而不是开始/结束元素 (<FieldRef></FieldRef>) 进行定义。 例如:
<FieldRef ID="{5744d18c-305e-4632-8bd1-09d134f4830d}"
Name="PatientName"
DisplayName="Patient Name"
Required="TRUE"/>
如果字段的源 XML 出现问题(例如格式不正确或不是有效的 XML 文件),则会出现“无法分析文件”错误。
新的非英语网站定义在部署后未出现在网站创建页中
使用 Visual Studio 2010 的非英语版本(即区域设置 ID 不是 1033 的版本)创建和部署新的网站定义后,**“SharePoint 自定义”选项卡未出现在“模板选择”框中,并且新的网站模板未出现在“新建 SharePoint 网站”**页中。
错误消息
无。
解决方法
之所以发生此问题,原因是 webtemp 网站定义配置文件(例如 webtemp_SiteDefinitionProject1.xml)的**“路径”属性中的值不正确。 在 webtemp 文件的“路径”属性(位于“部署位置”**下)中,将 1033 更改为相应的区域设置 ID。 例如,若要使用日语区域设置,请将该值更改为 1041。 有关更多信息,请参见 MSDN 网站上的 Locale IDs Assigned by Microsoft(Microsoft 分配的区域设置 ID)。
在干净系统上部署工作流项目时出错
如果在干净系统上部署 Visual Studio 2010 中的工作流项目,则会发生此问题。 干净系统是指以全新方式安装了 Visual Studio 2010 和 SharePoint 但未部署工作流项目的计算机。
错误消息
找不到 SharePoint 列表: 工作流历史记录。
解决方法
之所以发生此错误,原因是缺少“工作流历史记录”列表。 由于开发环境是干净系统,因此未部署工作流,并且“工作流历史记录”列表尚不存在。 若要解决此问题,请重新打开工作流向导,这样将会创建“工作流历史记录”列表。
重新进入工作流向导
在**“解决方案资源管理器”**中选择工作流节点。
在**“属性”**窗口中,单击具有省略号按钮的任何属性上的省略号 (…) 按钮。
调试时用户必须在浏览器中刷新应用程序页才能查看更新的图像
如果您在调试的 SharePoint 解决方案包含的应用程序页带有显示图像的控件(例如 HTML Image 控件),则必须在浏览器中刷新该页才能显示对图像所做的任何更改。
错误:网站位置无效
如果未安装 SharePoint Server 2010,则会发生此问题。 如果您对**“SharePoint 自定义向导”**中指定的 SharePoint 网站没有管理员访问权限,则也会发生此问题。
错误消息
- SharePoint 站点位置无效。
解决方法
安装 SharePoint Server 2010。
确保您对 SharePoint 网站具有管理员访问权限。 有关更多信息,请参见Office 联机文章 Grant access to the portal site(授予对门户网站的访问权限)。
事件接收器项目中不会发生网站删除 Web 事件
若您创建事件接收器项目并选择某些 Web 事件(如“正在删除网站”),则该事件决不会发生。
错误消息
无。
解决方法
发生此问题的原因是,功能范围必须是“网站”才能处理网站级事件,但事件接收器项目的默认功能范围是“Web”。 受影响的 Web 事件为:
正在删除网站 (WebDeleting)
已删除网站 (WebDeleted)
正在移动网站 (WebMoving)
已移动网站 (WebMoved)
若要纠正此问题,请更改事件接收器的功能范围,如下所示。
更改事件接收器的功能范围
在**“功能设计器”中打开事件接收器的功能。 为此,请在“解决方案资源管理器”**中双击该功能对应的 .feature 文件。
单击**“范围”**旁边的下拉箭头。
在下拉列表中选择**“网站”**。
更改业务数据连接模型项目中的标识符名称后出现部署错误
如果更改业务数据连接 (BDC) 模型中实体的标识符名称,然后尝试部署解决方案,则会出现此问题。
错误消息
<模型名称> 具有以下外部内容类型激活错误...
名为“<模型名称>”的 IMetadataObject 的字段“name”中有一个重复的值 ...
解决方法
若要解决此问题,请手动删除该模型,然后重新部署解决方案。 可以通过使用以下任一工具来删除该模型:
SharePoint 2010 管理中心。 有关更多信息,请参见 Microsoft TechNet 网站上的管理 BDC 模型。
Windows PowerShell。 可通过在命令提示符下键入以下命令来删除模型:Remove-SPBusinessDataCatalogModel。 有关更多信息,请参见 Microsoft TechNet 网站上的常规 cmdlet (SharePoint Server 2010)。
尝试在 SharePoint 中查看可视 Web 部件时出错
当用户控件的**“Path”**属性未以字符串“CONTROLTEMPLATES\”开头时会出现此问题。
错误消息
文件“/_CONTROLTEMPLATES/<项目名称>/<Web 部件名称>/<用户控件名称>.ascx”不存在。
“/”应用程序中的服务器错误。
解决方法
解决此问题
在**“解决方案资源管理器”**中,选择用户控件文件。 此文件的文件扩展名为 .ascx。
在**“视图”菜单上,单击“属性窗口”**。
在**“属性”窗口中,展开“部署位置”**节点。
确保**“Path”**属性的值以字符串“CONTROLTEMPLATES\”开头
运行包含任务窗体字段的已导入可重用工作流时出错
如果您导入一个包含任务窗体(其中包含一个字段)的工作流,然后在从中导入它的相同系统上运行新工作流,则会出现此问题。
错误消息
部署步骤“激活功能”中出错:已在当前网站集或子网站中找到在功能 [Guid] 中定义的 ID 为 [Guid] 的字段。
解决方法
此错误由字段 ID 冲突产生,此类冲突是因为 Visual Studio 中的导入可重用工作流项目不更改任务窗体字段 ID 导致出现的。 如果您在包含原始工作流的服务器上部署已导入工作流,则会出现字段 ID 冲突。
若要解决此问题,请使用“查找和替换”功能更改所有已导入工作流文件中的字段 ID 特性的值。
运行重命名导入列表实例时出错
如果您重命名一个导入列表实例,然后在 Visual Studio 中运行它,则会出现此问题。
错误消息
生成错误:部署步骤“激活功能”中出现错误: 文件 Template\Features\[import project feature name]\Files\Lists\[old list name]\Schema.xml 不存在。
解决方法
导入一个列表实例时,将向该列表实例的 Elements.xml 文件中添加一个名为 CustomSchema 的特性。 Elements.xml 包含该列表实例的自定义 schema.xml 的路径。 在 Visual Studio 中重命名列表实例时,自定义 schema.xml 的部署路径会发生更改,但 CustomSchema 特性的路径值不会更新。 因此,在激活功能时,列表实例无法在 CustomSchema 特性指定的旧路径中找到 schema.xml 文件。
若要解决此问题,请在 CustomSchema 特性中更新 schema.xml 文件的部署位置的路径。
由 IIS 终止的 SharePoint 调试会话
如果您在 Visual Studio SharePoint 解决方案中设置一个断点,再按 F5 运行该解决方案,然后在断点处停留 90 秒以上,则会发生此问题。
错误消息
正在调试的 Web 服务器进程已由 Internet Information Services (IIS) 终止。 可通过在 IIS 中配置应用程序池 ping 设置来避免此情况。 请参见帮助以了解更多详细信息。
解决方法
默认情况下,IIS 应用程序池在关闭应用程序之前,会为应用程序提供 90 秒响应时间。 此过程称为对应用程序进行 Ping 操作。 若要解决此问题,您可以延长等待时间或完全禁用应用程序 Ping。
访问 IIS 应用程序池设置
打开 IIS 管理器。
在**“连接”窗格中展开 SharePoint 服务器节点,然后单击“应用程序池”**。
在**“应用程序池”页上选择 SharePoint 应用程序池(通常选择“SharePoint - 80”),然后在“操作”窗格中单击“高级设置”**。
若要增加 IIS 超时前的等待时间,请将**“Ping 最大响应时间(秒)”**的值更改为一个大于 90 秒的值。
若要禁用 IIS Ping,请将**“启用 Ping”设置为“False”**。
自动收回功能会在 SharePoint 中的保留孤立的列表实例
如果您执行以下步骤,则会出现此问题。
在 Visual Studio 2010 中创建一个包含列表实例的列表定义。
按 F5 运行解决方案。
停止调试或关闭 SharePoint 网站。
重新打开 SharePoint 网站,然后打开列表实例。
错误消息
“/”应用程序中的服务器错误。
解决方法
出现此情况是因为,在关闭 SharePoint 解决方案的调试会话后,自动收回功能会收回该解决方案。 收回过程将删除 SharePoint 中的列表定义,但不删除列表实例。 列表实例需要基础列表定义。
若要解决此问题,请在**“生成”菜单上单击“部署”**以部署解决方案。 (不要使用 F5 调试它。)然后,删除 SharePoint 中的列表实例。
原始 SharePoint 解决方案将由导出版本替换
如果您导出一个 SharePoint 解决方案,将该解决方案导入 Visual Studio 中,然后将其部署回从中导出它的网站,这样就替换了原始 SharePoint 解决方案。 如果您将解决方案部署到一个未激活原始解决方案的服务器,则不会出现此问题。
错误消息
无。
解决方法
若要避免在从中导出某个解决方案的网站上覆盖该解决方案,请在 Visual Studio 项目中更改 SolutionID 的 GUID 和所有导入功能的功能 ID。
开始调试时出错
在 Visual Studio 中开始调试 SharePoint 解决方案时,您会收到一条错误:“Visual Studio 无法加载 Web.config 配置文件,因为字典中不存在给定键”。
错误消息
无法加载 Web.config 配置文件。 请检查文件中是否存在任何格式不正确的 XML 元素,然后重试。 出现以下错误:“字典中不存在给定键”。
解决方法
若要解决此问题,请确保 Visual Studio 中的 SharePoint 项目的“网站 URL”属性值与分配给 Web 应用程序的备用访问映射的默认区域的 URL 匹配。 对 URL 使用其他区域(如 Intranet)将无法解决此错误。 项目的网站 URL 与默认区域中的 URL 必须相同。 若要访问备用访问映射,请在 SharePoint 2010 管理中心实用工具中单击**“应用程序管理”,然后在“Web 应用程序”下方单击“配置备用访问映射”**链接。 有关更多信息,请参见为 Web 应用程序创建区域。