現象
次の更新プログラムのいずれかをインストールした後、一部の SharePoint ページがレンダリングされず、次のようなエラー メッセージが生成されます。
Web パーツ エラー: このページ上の Web パーツまたは Web フォーム コントロールは、表示またはインポートできません。 この種類が見つからないか、安全なコントロールとして登録されていません。
原因
更新プログラムをインストールすると、SharePoint 2010 および SharePoint 2013 で ASP.NET コントロールの許可リストが適用されます。 SharePoint ページ上の Web パーツまたはコントロールがこの許可リストに追加されていない場合、ページはレンダリングされません。
解決方法
SafeControls リストにないコントロールを使用しているためにページがレンダリングされなくなった場合は、次の手順を実行します。
-
SharePoint 統合ログ サービス (ULS) のログを確認し、 9s9ay タグ、またはコントロールがブロックされていることを示す "Blocking control with property" を含むメッセージを見つけます。
-
エラー メッセージから、型、名前空間、およびアセンブリの厳密な名前を特定します。
-
例 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 要素の属性値の形式の詳細については、「パッケージデザイナーでのセーフコントロールのマーク付け」の手順 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