安全でないコントロールを使用すると SharePoint ページがレンダリングされない

適用対象: Microsoft SharePoint Server 2013 Service Pack 1Microsoft SharePoint Foundation 2013 Service Pack 1Microsoft SharePoint Foundation 2010 Service Pack 2

現象


次の更新プログラムのいずれかをインストールした後、一部の SharePoint ページがレンダリングされず、次のようなエラー メッセージが生成されます。  

原因


更新プログラムをインストールすると、SharePoint 2010 および SharePoint 2013 で ASP.NET コントロールの許可リストが適用されます。 SharePoint ページ上の Web パーツまたはコントロールがこの許可リストに追加されていない場合、ページはレンダリングされません。

解決方法


SafeControls リストにないコントロールを使用しているためにページがレンダリングされなくなった場合は、次の手順を実行します。  

  1. SharePoint 統合ログ サービス (ULS) のログを確認し、 9s9ay  タグ、またはコントロールがブロックされていることを示す "Blocking control with property" を含むメッセージを見つけます。  
  2. エラー メッセージから、型、名前空間、およびアセンブリの厳密な名前を特定します。 
    • 例 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 で種類の名前を検索することで、名前空間とアセンブリ データを見つけることができます。  

  3. SafeControls 要素 (ソリューション)」の説明に従って、指定された種類、名前空間、およびアセンブリの厳密な名前の新しい SafeControls 要素を、configuration/SharePoint/SafeControls 要素以下の Web.config ファイルに追加し、Safe 属性を TRUE に設定します。  

SafeControls 要素の属性値の形式の詳細については、「パッケージデザイナーでのセーフコントロールのマーク付け」の手順 12 の表を参照してください。

回避策


安全でないコントロールが多数ある場合は、次の手順を実行すると、この問題を回避できます。

  1. configuration/SharePoint 要素以下にある Web.config ファイルの SafeMode 要素を編集します。  
  2. True の値を指定した ControlCompatMode 属性を追加します。