อาการ
บางชนิดที่สืบทอดจาก IDictionary จะถูกบล็อกจากการดีซีเรียลไลซ์หลังจากใช้การอัปเดตความปลอดภัยเดือนกันยายน 2024 สําหรับ SharePoint Server เมื่อปัญหานี้เกิดขึ้น ข้อความแสดงข้อผิดพลาดต่อไปนี้และแท็กเหตุการณ์ "4nsby" หรือ "4nss4" จะถูกบันทึกในบันทึก SharePoint Unified Logging System (ULS):
ตรวจพบชนิด IDictionary ที่ไม่ได้รับการสนับสนุน ชนิด:> ประเภท <ประกอบ:> แอสเซมบลี <
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากชนิดไม่อยู่ในรายการอนุญาตของการดีซีเรียลไลซ์
วิธีแก้ไขปัญหา
ถ้าปัญหานี้เกิดขึ้นในกระบวนการ w3wp.exe ผู้ดูแลระบบฟาร์มสามารถแก้ไขปัญหานี้ได้โดยการเพิ่มชนิดที่ถูกบล็อกไปยังรายการที่เชื่อถือได้ในไฟล์ Web.config แต่เฉพาะเมื่อคุณแน่ใจว่าชนิดเหล่านี้มีความปลอดภัย
เมื่อต้องการทําเช่นนี้ ให้เพิ่มองค์ประกอบ AllowedItem ใหม่ที่มีชื่อ AllowedIDictionaryType และระบุคุณสมบัติ ชนิด หรือ แอสเซมบลี องค์ประกอบนี้ควรถูกเพิ่มภายใต้ส่วน การกําหนดค่า/SharePoint/SafeMode/AllowedListItems ในไฟล์ Web.config ต่อไปนี้เป็นตัวอย่าง:
<SafeMode
MaxControls = "200"
CallStack = "false"
DirectFileDependencies ="10"
TotalFileDependencies = "250"
AllowPageLevelTrace = "false"
ControlCompatMode="false"
>
<PageParserPaths>
</PageParserPaths>
<AllowedListItems>
<AllowedItem Name="AllowedIDictionaryType" Type="Microsoft.SharePoint.Portal.WebControls.RSSAggregatorWebPart, Microsoft.SharePoint.Portal, Version=15.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx"/>
<AllowedItem Name="AllowedIDictionaryType" Assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx"/>
</AllowedListItems>
</SafeMode>