症状
安装以下更新之一后,某些 SharePoint 页面将不呈现,并生成如下错误消息:
Web 部件错误: 此页面上的 Web 部件或 Web 表单控件无法显示或导入。 找不到该类型或未将其注册为安全类型。
原因
安装更新后,将在 SharePoint 2010 和 SharePoint 2013 中强制实施 ASP.NET 控件的允许列表。 如果未将 SharePoint 页面上的 Web 部件或控件添加到允许列表,则不会呈现页面。
解决方案
如果页面因使用不在 SafeControls 列表中的控件而未呈现,请按照以下步骤操作:
-
查看 SharePoint 统一日志记录服务 (ULS) 日志以查找 9s9ay 标记或包含“阻止具有属性的控件”的消息,该消息表明某控件已被阻止。
-
从错误消息中识别类型、命名空间和程序集强名称。
-
示例 1
如果有以下错误信息:
"The type Contoso.Customizations.WebPartControl, Contoso.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f8f11d50a3a could not be found or it is not registered as safe."
Type = "WebPartControl"
Namespace = "Contoso.Customizations"
Assembly strong name = "Contoso.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f8f11d50a3a"-
示例 2
如果有以下错误信息:
"Blocking control with property traversal markup. [tagName: SharePoint:WebPartControl][propName: propName1][type: typeName1]"
Type = "WebPartControl" (not "typeName1")
您可以通过查询类型名称在 Microsoft Docs 中找到命名空间和程序集数据。 -
-
如 SafeControls 元素(解决方案)中所述,将给定类型、命名空间和程序集强名称的新 SafeControls 元素添加到 configuration/SharePoint/SafeControls 元素下的 Web.config 文件,然后将 Safe 属性设置为 TRUE。
有关 SafeControls 元素中属性值格式的更多信息,请参阅在程序包设计器中标记 SafeControls步骤 12 中的表格。
替代方法
如果您有许多不安全的控件,则可以按照以下步骤解决此问题:
-
在 configuration/SharePoint 元素下的 Web.config 文件中编辑 SafeMode 元素。
-
添加一个值为 True 的 ControlCompatMode 属性。
警告
我们不建议您采用这种解决方法,因为这样会允许运行不安全的 ASP.net 控件。
Content Idea Request: CONTENT IDEA REQUEST 120896
Author: secure
Writer: v-weizhu
Tech Reviewer: qingliu; gli; mswann
Editor: v-jesits