อาการ
หลังจากที่คุณติดตั้งหนึ่งในการอัปเดตต่อไปนี้ บางหน้าไม่แสดงใน Microsoft SharePoint:
-
อธิบายเกี่ยวกับโปรแกรมปรับปรุงความปลอดภัยใน SharePoint Server 2019: 8 กันยายน 2020 (KB 4484505)
-
21 กันยายน 2020 อัปเดต for SharePoint Server 2019 (KB4461512)
-
อธิบายของโปรแกรมปรับปรุงความปลอดภัยใน SharePoint Enterprise Server 2016: 8 กันยายน 2020 (KB 4484506)
-
อธิบายของโปรแกรมปรับปรุงความปลอดภัยใน SharePoint Foundation 2010: 8 กันยายน 2020 (KB 4486667)
ตัวอย่างเช่น เพจพอร์ทัล Microsoft Identity Manager (MIM) และหน้าแบบปรับแต่งเองบางหน้าที่ปรับใช้ผ่านโซลูชัน SharePoint จะไม่แสดง
นอกจากนี้ คุณอาจพบสถานการณ์สมมติต่อไปนี้อย่างน้อยหนึ่งสถานการณ์
สถานการณ์ที่ 1
หน้าที่ถูกบล็อกไม่แสดงหนึ่งในข้อความแสดงข้อผิดพลาดต่อไปนี้:
-
แอตทริบิวต์ 'auto1ventwireup' ไม่ได้รับอนุญาตให้เข้าร่วมในหน้านี้
-
แอตทริบิวต์ 'enablesessionstates' ไม่ได้รับอนุญาตให้ใช้งานในหน้านี้
-
บล็อกโค้ดไม่ได้รับอนุญาตในไฟล์นี้
-
ตัวจัดการเหตุการณ์ 'OnSelectedIndexChanged' ไม่ได้รับอนุญาตในหน้านี้
หมายเหตุ เหตุการณ์ในข้อความข้อผิดพลาดสุดท้ายอาจเป็นเหตุการณ์อื่นด้วย เช่น "OnClick"
สถานการณ์สมมติที่ 2
หน้า ghosted ที่ถูกบล็อกแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
UnsafeControlException: ไม่สามารถแสดงหรือนําเข้า Web Part หรือตัวควบคุม Web Form บนหน้านี้ ไม่พบชนิดหรือไม่ได้ลงทะเบียนว่าปลอดภัย
สถานการณ์สมมติที่ 3
หน้า ghosted ที่ถูกบล็อกแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
ไฟล์ที่ถูกอ้างอิง '/_layouts/somedirectory/affectedusercontrol.ascx' จะไม่อนุญาตให้ใช้ในหน้านี้
สาเหตุ
หน้าที่ถูกหลอกจะถูกจัดเก็บไว้ในระบบไฟล์ ระดับความปลอดภัยของพวกเขาได้รับการปรับปรุงโดยสคริปต์ฝั่งเซิร์ฟเวอร์ที่ไม่ปลอดภัยและตัวควบคุมที่ไม่ปลอดภัย หน้าบางหน้าอาจไม่ถูกบล็อกไม่ให้แสดงถ้าเงื่อนไขต่อไปนี้เป็นจริง:
-
หน้า ghosted ประกอบด้วยโค้ดอินไลน์หรือสคริปต์ฝั่งเซิร์ฟเวอร์
-
ชนิด Code-behind หรือ Web Part ไม่ได้ลงทะเบียนว่าปลอดภัย
การแก้ปัญหาสถานการณ์สมมติที่ 1
เมื่อต้องการแก้ไขปัญหานี้ ให้เพิ่มองค์ประกอบPageParserPathใหม่ที่มีแอตทริบิวต์VirtualPathไปยังไฟล์ Web.config ภายใต้องค์ประกอบการกําหนดค่า/SharePoint/SafeMody/PageParserPaths
ตัวอย่างเช่น คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
"แอตทริบิวต์ 'auto1ventwireup' ไม่ได้รับอนุญาตให้ใช้ในหน้านี้"
ในกรณีนี้ คุณสามารถเพิ่มองค์ประกอบ PageParserPath ดังนี้:
<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="15" TotalFileDependencies="250" AllowPageLevelTrace="false">
<PageParserPaths>
<PageParserPath VirtualPath="/<relativepath>/page.aspx" CompilationMode="Always" AllowServerSideScript="true" AllowUnsafeControls="true"/>
</PageParserPaths>
</SafeMode>
ถ้าทุกหน้าในไดเรกทอรีเสมือนเดียวกันต้องถูกปลดบล็อก คุณสามารถใช้องค์ประกอบ PageParserPath ดังต่อไปนี้:
<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="15" TotalFileDependencies="250" AllowPageLevelTrace="false">
<PageParserPaths>
<PageParserPath VirtualPath="/<relativepath>/*" CompilationMode="Always" AllowServerSideScript="true" AllowUnsafeControls="true" IncludeSubFolders="True"/>
</PageParserPaths>
</SafeMode>
-
VirtualPath คือเส้นทางของหน้าที่ถูกบล็อก
-
VirtualPath จะต้องอ้างอิงถึงหน้าที่เป็น ghosted และผู้ใช้ไม่สามารถ unghosted หรือไดเรกทอรีที่มีหน้าดังกล่าว
-
VirtualPath จะต้องอ้างอิงถึงหน้าที่ไม่อ้างอิงหน้าอื่นหรือหน้าต้นแบบที่สามารถ unghosted หรือไดเรกทอรีที่ไม่มีหน้าหรือหน้าต้นแบบดังกล่าว
-
DirectFileDependencies ระบุจํานวนการขึ้นต่อกันของไฟล์โดยตรงที่ได้รับอนุญาต ถ้าคุณได้รับข้อความแสดงข้อผิดพลาด เช่น "จํานวนการขึ้นต่อกันของไฟล์โดยตรงที่ได้รับอนุญาตเกินขีดจํากัด" ให้เปลี่ยนค่านี้
การแก้ปัญหาสถานการณ์สมมติที่ 2
เมื่อต้องการแก้ไขปัญหานี้ ให้เพิ่มองค์ประกอบSafeControlsใหม่ให้กับชนิด Namespace และชื่อที่คาดเดาได้ของการประกอบไปยังไฟล์ Web.config ภายใต้องค์ประกอบการกําหนดค่า/SharePoint/SafeControlsตามที่อธิบายไว้ในองค์ประกอบ SafeControls (โซลูชัน) จากนั้น ตั้งค่าแอตทริบิวต์Safeเป็นTRUE
For more information about the format of the attribute values in the SafeControls element, refer to the table in step 12 in the "Marking Safe Controls in the Package Designer" section of How to: Mark controls as safe controls.
การแก้ปัญหาสถานการณ์สมมติที่ 3
เมื่อต้องการแก้ไขปัญหานี้ ให้เพิ่มองค์ประกอบSafeControlsใหม่ที่ใช้แอตทริบิวต์Srcไปยังไฟล์ Web.config ภายใต้องค์ประกอบConfiguration/SharePoint/SafeControls
ตัวอย่างเช่น คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
"ไฟล์ที่อ้างอิง '/_layouts/somedirectory/affectedusercontrol.ascx' ไม่ได้รับอนุญาตในหน้านี้"
ในกรณีนี้ คุณสามารถเพิ่มองค์ประกอบ SafeControls ตามตัวอย่างต่อไปนี้:
< SafeControls>
<SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" SafeAgainstScript="True" />
</SafeControls>
< SafeControl> <SafeControl Src="~/_layouts/somedirectory/*" IncludeSubFolders="True" Safe="True" /> </SafeControls>