SharePoint 解决方案疑难解答

当使用 Visual Studio 调试器调试 SharePoint 解决方案时,可能会出现以下问题或警报。有关更多信息,请参见Debugging SharePoint Workflow Solutions

本主题包括下列各节。

  • 在沙盒可视 Web 部件的标记限制
  • 在项目和项目项名称中的字符限制
  • 创建自定义字段时出错
  • 新的非英语网站定义在部署后未出现在网站创建页中
  • 在干净系统上部署工作流项目时出错
  • 调试时用户必须在浏览器中刷新应用程序页才能查看更新的图像
  • 错误:网站位置无效
  • 事件接收器项目中不会发生网站删除 Web 事件
  • 更改业务数据连接模型项目中的标识符名称后出现部署错误
  • 尝试在 SharePoint 中查看可视 Web 部件时出错
  • 运行包含任务窗体字段的已导入可重用工作流时出错
  • 运行重命名导入列表实例时出错
  • 由 IIS 终止的 SharePoint 调试会话
  • 自动收回功能会在 SharePoint 中的保留孤立的列表实例
  • 原始 SharePoint 解决方案将由导出版本替换
  • 错误会在开始调试
  • 相关主题

在沙盒可视 Web 部件的标记限制

沙盒解决方案中的可视 web 部件无法处理标准标记,例如$SPUrl,SharePoint 运行时支持。因此,URL 无法解析,因此,您不能预览"设计"视图中的内容在可视 web 部件设计器,如果您引用它直接在脚本组件,如以下示例所示:

<script src=”<% $SPUrl:~site/SiteAssets/ListOperations.js %>"></script>

使用文本,此限制若要解决和修复该标记,请参见它:

<asp:literal ID="Literal1" runat="server" Text="&lt;script src='" />
<asp:literal ID="Literal2" runat="server" Text="<% $SPUrl:~site/SiteAssets/ListOperations.js %>" />
<asp:literal ID="Literal3" runat="server" Text="' type='text/javascript' &gt;&lt;/script&gt;" />

在项目和项目项名称中的字符限制

项目和项目项的名称可能包含适用于 SharePoint 中的部署路径 2010 中仅的字符。不允许使用其他字符。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

“字符无效”错误消息。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

对于 SharePoint 项目和项目项名称,仅使用以下字符:

  • 字母数字 ASCII 字符

  • 空格

  • 句点 (.)

  • 逗号 (,)

  • 下划线 (_)

  • 短划线 (-)

  • 反斜杠 (\)

在打包项目时,验证规则来验证部署的每个文件的部署路径属性只包含上述有效字符。

创建自定义字段时出错

在 Visual Studio,自定义字段是使用 XML 定义的。使用特定格式,因此,如果字段未定义或引用错误。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

打包时出现的“无效字符”错误消息。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

如下面的示例所示,字段定义的 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 (即区域设置 ID 的一个版本的非英语版本 1033 之外) 后,SharePoint 自定义 选项不会出现在 模板选择 框中,并且新的站点模板不会出现在 新建 SharePoint 网站 页。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

无。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

之所以发生此问题,原因是 webtemp 网站定义配置文件(例如 webtemp_SiteDefinitionProject1.xml)的**“路径”属性中的值不正确。在 webtemp 文件的“路径”属性(位于“部署位置”**下)中,将 1033 更改为相应的区域设置 ID。例如,若要使用日语区域设置,请将该值更改为 1041。有关更多信息,请参见 MSDN 网站上的 Locale IDs Assigned by Microsoft(Microsoft 分配的区域设置 ID)。

在干净系统上部署工作流项目时出错

如果您在 Visual Studio 的工作流项目在干净系统上,则会出现此问题。干净系统上是具有 Visual Studio 新安装和 SharePoint,但未部署工作流项目的计算机。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

找不到 SharePoint 列表: 工作流历史记录。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

之所以发生此错误,原因是缺少“工作流历史记录”列表。由于开发环境是干净系统,因此未部署工作流,并且“工作流历史记录”列表尚不存在。若要解决此问题,请重新打开工作流向导,这样将会创建“工作流历史记录”列表。

重新进入工作流向导

  1. 解决方案资源管理器,选择工作流节点。

  2. 属性 窗口中,选择省略号 (…) 按具有省略号按钮的任何属性。

调试时用户必须在浏览器中刷新应用程序页才能查看更新的图像

如果您在调试的 SharePoint 解决方案包含的应用程序页带有显示图像的控件(例如 HTML Image 控件),则必须在浏览器中刷新该页才能显示对图像所做的任何更改。

错误:网站位置无效

如果未安装 SharePoint Server 2010,则会发生此问题。如果您对**“SharePoint 自定义向导”**中指定的 SharePoint 网站没有管理员访问权限,则也会发生此问题。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

  • SharePoint 站点位置无效。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

  • 安装 SharePoint Server 2010。

  • 确保您对 SharePoint 网站具有管理员访问权限。有关更多信息,请参见Office 联机文章 Grant access to the portal site(授予对门户网站的访问权限)。

事件接收器项目中不会发生网站删除 Web 事件

若您创建事件接收器项目并选择某些 Web 事件(如“正在删除网站”),则该事件决不会发生。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

无。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

发生此问题的原因是,功能范围必须是“网站”才能处理网站级事件,但事件接收器项目的默认功能范围是“Web”。受影响的 Web 事件为:

  • 正在删除网站 (WebDeleting)

  • 已删除网站 (WebDeleted)

  • 正在移动网站 (WebMoving)

  • 已移动网站 (WebMoved)

若要纠正此问题,请更改事件接收器的功能范围,如下所示。

更改事件接收器的功能范围

  1. 解决方案资源管理器,双击文件或打开其快捷菜单中选择 打开打开在 功能设计器 的事件接收器的 .feature 文件。

  2. 范围旁边的下箭头,然后在显示的列表的 网站

更改业务数据连接模型项目中的标识符名称后出现部署错误

如果更改业务数据连接 (BDC) 模型中实体的标识符名称,然后尝试部署解决方案,则会出现此问题。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

  • <模型名称> 具有以下外部内容类型激活错误...

  • 名为“<模型名称>”的 IMetadataObject 的字段“name”中有一个重复的值 ...

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

若要解决此问题,请手动删除该模型,然后重新部署解决方案。可以通过使用以下任一工具来删除该模型:

  • SharePoint 2010 管理中心。有关更多信息,请参见 Microsoft TechNet 网站上的管理 BDC 模型

  • Windows PowerShell。可通过在命令提示符下键入以下命令来删除模型:Remove-SPBusinessDataCatalogModel。有关更多信息,请参见 Microsoft TechNet 网站上的常规 cmdlet (SharePoint Server 2010)

尝试在 SharePoint 中查看可视 Web 部件时出错

当用户控件的**“Path”**属性未以字符串“CONTROLTEMPLATES\”开头时会出现此问题。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

  • 文件“/_CONTROLTEMPLATES/<项目名称>/<Web 部件名称>/<用户控件名称>.ascx”不存在。

  • “/”应用程序中的服务器错误。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

解决此问题

  1. 解决方案资源管理器,选择用户控件文件,文件扩展名为 .ascx。

  2. 在菜单栏上,选择**“视图”“属性窗口”**。

  3. 在**“属性”窗口中,展开“部署位置”**节点。

  4. 确保 路径 属性的值以字符串“CONTROLTEMPLATES \”。

运行包含任务窗体字段的已导入可重用工作流时出错

如果您导入一个包含任务窗体(其中包含一个字段)的工作流,然后在从中导入它的相同系统上运行新工作流,则会出现此问题。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

部署步骤“激活功能”中出错:已在当前网站集或子网站中找到在功能 [Guid] 中定义的 ID 为 [Guid] 的字段。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

此错误由字段 ID 冲突产生,此类冲突是因为 Visual Studio 中的导入可重用工作流项目不更改任务窗体字段 ID 导致出现的。如果您在包含原始工作流的服务器上部署已导入工作流,则会出现字段 ID 冲突。

若要解决此问题,请使用“查找和替换”功能更改所有已导入工作流文件中的字段 ID 特性的值。

运行重命名导入列表实例时出错

如果您重命名一个导入列表实例,然后在 Visual Studio 中运行它,则会出现此问题。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

生成错误:部署步骤“激活功能”中出现错误: 文件 Template\Features\[import projectfeaturename]\Files\Lists\[oldlist name]\Schema.xml 不存在。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

导入一个列表实例时,将向该列表实例的 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 秒。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

正在调试的 Web 服务器进程已由 Internet Information Services (IIS) 终止。可以通过在 IIS 中配置应用程序池 ping 设置避免此问题。有关更多详细信息,请参见“帮助”。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

默认情况下,IIS 应用程序池在关闭应用程序之前,会为应用程序提供 90 秒响应时间。此过程称为对应用程序进行 Ping 操作。若要解决此问题,您可以延长等待时间或完全禁用应用程序 Ping。

访问 IIS 应用程序池设置

  1. 打开 IIS 管理器。

  2. 连接 窗格中,展开 SharePoint 服务器节点,然后选择 应用程序池 节点。

  3. 应用程序池 页上,选择 SharePoint 应用程序池 (通常为“SharePoint - 80 "),然后,在 操作 窗格中,选择 高级设置 链接。

  4. 在若要增加 IIS 超时前等待时间,请将 Ping 最大响应时间 (秒) 的值设置为大于 90 秒的值。

  5. 若要禁用 IIS Ping,请将**“启用 Ping”设置为“False”**。

自动收回功能会在 SharePoint 中的保留孤立的列表实例

如果您执行以下步骤,则会出现此问题。

  1. 在 Visual Studio 中创建一个包含列表实例的列表定义。

  2. 选择 F5 键运行解决方案。

  3. 停止调试或关闭 SharePoint 网站。

  4. 重新打开 SharePoint 网站,然后打开列表实例。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

“/”应用程序中的服务器错误。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

出现此情况是因为,在关闭 SharePoint 解决方案的调试会话后,自动收回功能会收回该解决方案。收回过程将删除 SharePoint 中的列表定义,但不删除列表实例。列表实例需要基础列表定义。

若要解决此问题,部署解决方案。,在菜单栏上,选择 Build部署。(不要通过选择 F5 键调试解决方案。)然后,删除 SharePoint 中的列表实例。

原始 SharePoint 解决方案将由导出版本替换

如果您导出一个 SharePoint 解决方案,将该解决方案导入 Visual Studio 中,然后将其部署回从中导出它的网站,这样就替换了原始 SharePoint 解决方案。如果您将解决方案部署到一个未激活原始解决方案的服务器,则不会出现此问题。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

无。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

若要避免在从中导出某个解决方案的网站上覆盖该解决方案,请在 Visual Studio 项目中更改 SolutionID 的 GUID 和所有导入功能的功能 ID。

错误会在开始调试

当您开始调试在 Visual Studio 中的 SharePoint 解决方案,错误指示 Visual Studio 无法加载 Web.config 文件,因为特定键不在字典。

Ee231594.collapse_all(zh-cn,VS.110).gif错误消息

未能加载 Web.config 配置文件。请检查文件中是否存在任何格式不正确的 XML 元素,然后重试。出现以下错误:“字典中不存在给定键”。

Ee231594.collapse_all(zh-cn,VS.110).gif解决方法

若要解决此问题,请确保指派给默认区域的 Web 应用程序的备用访问映射 SharePoint 项目的网站 URL 属性值在 Visual Studio 的匹配 URL。通过使用另一个区域,如 Intranet,不能解决该错误,URL 的。该项目的网站 URL 与默认区域必须匹配。若要访问备用访问映射,请打开 SharePoint 2010 管理中心实用工具,选择 应用程序管理 链接,然后,在 Web 应用程序下,选择 配置备用访问映射 链接。有关更多信息,请参见为 Web 应用程序创建区域

请参见

概念

SharePoint 打包和部署疑难解答

其他资源

生成和调试 SharePoint 解决方案

使用 Visual Studio 进行调试