症状
安装以下更新之一后,某些 SharePoint 页面不会呈现,并生成如下所示的错误消息:
注意
Web 部件错误:无法显示或导入此页上的 Web 部件或 Web 窗体控件。 找不到类型或未注册为安全类型。
- SharePoint Enterprise Server 2013 安全更新说明:2020 年 9 月 8 日 (KB4484515)
- SharePoint Foundation 2013 安全更新说明:2020 年 9 月 8 日 (KB4484488)
- SharePoint Foundation 2010 安全更新说明:2020 年 9 月 8 日 (KB4486667)
原因
安装更新后,SharePoint 2010 和 SharePoint 2013 中将强制实施 ASP.NET 控件的允许列表。 如果 SharePoint 页面上的 Web 部件或控件未添加到允许列表,则页面不会呈现。
解决方法
如果页面不再呈现,因为它们使用的控件不在 SafeControls 列表中,请执行以下步骤:
查看 SharePoint 统一日志记录服务 (ULS) 日志 ,查找 9s9ay 标记或包含指示控件被阻止的“阻止控件的属性”的消息。
从错误消息中标识类型、命名空间和程序集强名称。
- 示例 1
给定以下错误消息:
“找不到类型 Contoso.Customizations.WebPartControl、Contoso.WebParts、Version=1.0.0.0、Culture=neutral、PublicKeyToken=b03f5f8f11d50a3a 或未将其注册为安全。”
Type = “WebPartControl”Namespace = “Contoso.Customizations”
程序集强名称 = “Contoso.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f8f11d50a3a”
- 示例 2
给定以下错误消息:
“使用属性遍历标记阻止控件。 [tagName: SharePoint:WebPartControl][propName: propName1][type: typeName1]”
Type = “WebPartControl” (不是 “typeName1”)可以通过查询类型名称在 Microsoft Docs 中找到命名空间和程序集数据。
将给定类型、命名空间和程序集强名称的新 SafeControls 元素添加到 configuration/SharePoint/SafeControls 元素下的 Web.config 文件,如 SafeControls 元素 (Solution) 中所述,然后将 Safe 属性设置为 TRUE。
有关 SafeControls 元素中属性值的格式的详细信息,请参阅在包Designer中标记安全控件的步骤 12 中的表。
解决方法
如果有许多不安全的控制措施,可以按照以下步骤解决此问题:
- 编辑 configuration/SharePoint 元素下的 Web.config 文件中的 SafeMode 元素。
- 添加值为 True 的 ControlCompatMode 属性。
警告
我们不建议使用此解决方法,因为它允许运行不安全 ASP.net 控件。