หน้า SharePoint ไม่แสดงเมื่อใช้ตัวควบคุมที่ไม่ปลอดภัย

นำไปใช้กับ
SharePoint Server 2013 SP1 SharePoint Foundation 2013 SP1 Microsoft SharePoint Foundation 2010 Service Pack 2

อาการ

หลังจากที่คุณติดตั้งหนึ่งในการอัปเดตต่อไปนี้ แล้ว หน้า SharePoint บางหน้าจะไม่แสดงและสร้างข้อความแสดงข้อผิดพลาดเช่นต่อไปนี้:

หมายเหตุ

ข้อผิดพลาดของ Web Part: ไม่สามารถแสดงหรือนําเข้าตัวควบคุม Web Part หรือตัวควบคุมฟอร์มของ Web Form บนเพจนี้ได้ ไม่พบชนิดหรือไม่ได้ลงทะเบียนว่าปลอดภัย

สาเหตุ

รายการที่อนุญาตของตัวควบคุม ASP.NET จะถูกบังคับใช้ใน SharePoint 2010 และ SharePoint 2013 หลังจากที่คุณติดตั้งการอัปเดต ถ้า Web Part หรือตัวควบคุมบนหน้า SharePoint ไม่ได้ถูกเพิ่มลงในรายการที่อนุญาต หน้านั้นจะไม่แสดง

การแก้ปัญหา

ถ้าหน้าไม่แสดงอีกต่อไปเนื่องจากพวกเขาใช้ตัวควบคุมที่ไม่ได้อยู่ในรายการ SafeControls ให้ทําตามขั้นตอนเหล่านี้:

  1. รีวิว แฟ้มบันทึกของ SharePoint Unified Logging Service (ULS) เพื่อค้นหาแท็ก 9s9ay หรือข้อความที่มี "ตัวควบคุมการบล็อกที่มีคุณสมบัติ" ที่ระบุว่าตัวควบคุมถูกบล็อก

  2. ระบุชนิด Namespace และชื่อที่คาดเดายากของแอสเซมบลีจากข้อความแสดงข้อผิดพลาด

    • ตัวอย่าง 1

    ได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
    "ชนิด Contoso.Customizations.WebPartControl, Contoso.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f8f11d50a3a ไม่พบหรือไม่ได้ลงทะเบียนว่าปลอดภัย"
    ชนิด = "WebPartControl"

    Namespace = "Contoso.Customizations"

    Assembly strong name = "Contoso.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f8f11d50a3a"

    • ตัวอย่าง 2

    ได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
    "การปิดกั้นการควบคุมด้วยมาร์กอัปข้ามคุณสมบัติ [tagName: SharePoint:WebPartControl][propName: propName1][type: typeName1]"
    พิมพ์ = "WebPartControl" (ไม่ใช่ "typeName1")

    คุณสามารถค้นหา Namespace และข้อมูลแอสเซมบลีใน เอกสาร Microsoft ได้โดยการสอบถามชื่อชนิด

  3. เพิ่มองค์ประกอบ SafeControls ใหม่สําหรับชนิดที่ระบุ Namespace และชื่อที่คาดเดายากของแอสเซมบลีลงในไฟล์ Web.config ภายใต้องค์ประกอบการกําหนดค่า/SharePoint/SafeControls ตามที่อธิบายไว้ในองค์ประกอบ SafeControls (โซลูชัน) แล้วตั้งค่าแอตทริบิวต์ Safe เป็น TRUE

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบของค่าแอตทริบิวต์ในองค์ประกอบ SafeControls ให้ดูตารางในขั้นตอนที่ 12 ในการทําเครื่องหมายตัวควบคุมที่ปลอดภัยใน Designer แพคเกจ

วิธีแก้ไขปัญหาชั่วคราว

ถ้าคุณมีตัวควบคุมที่ไม่ปลอดภัยจํานวนมาก คุณสามารถแก้ไขปัญหานี้ได้โดยทําตามขั้นตอนเหล่านี้:

  1. แก้ไของค์ประกอบ SafeMode ในไฟล์ Web.config ภายใต้องค์ประกอบการกําหนดค่า/SharePoint
  2. เพิ่มแอตทริบิวต์ ControlCompatMode ที่มีค่าเป็น True

ข้อควรระวัง

เราไม่แนะนําให้ใช้การแก้ไขปัญหาชั่วคราวนี้ เนื่องจากวิธีนี้จะอนุญาตให้เรียกใช้ตัวควบคุม ASP.net ที่ไม่ปลอดภัยได้