השגיאה "הסוג לא היה ניתן לפתרון" בעת שימוש בפתרון ארגז חול (Sandbox) או ב- Web Part (KB5015556)

חל על
SharePoint Foundation 2013 SP1 SharePoint Server 2016

סימפטומים

בעת שימוש בפתרון ארגז חול (Sandbox) או ב- Web Part, ייתכן שתקבל את הודעות השגיאה הדומה להודעה הבאה ביומני מערכת הרישום המאוחדת (ULS) של SharePoint. הודעות אלה מציינות שפתרונות או רכיבי Web Part מסוימים של ארגז חול חסומים.

עבור SharePoint Foundation 2013 ו- SharePoint Enterprise Server 2016 עם עדכון האבטחה של מאי 2022 מותקן:

מזהה האירוע ההודעה
חוה מלכה הערה: קריאה ל- ExecuteRequestInSandBox נכשלה. System.ArgumentException: הסוג לא היה ניתן לאתחול ב- Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.SPUserCodeSerializationBinder.BindToType(String assemblyName, String typeName)
at
…...
חוה מלכה הערה: מקבל הודעת שגיאה עבור Exception System.ArgumentException: הסוג לא היה ניתן לאתחול ב- Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.SPUserCodeSerializationBinder.BindToType(String assemblyName, String typeName)
at
…...

עבור SharePoint Foundation 2013 עם עדכון האבטחה של יוני 2022 או עדכון אבטחה מאוחר יותר מותקן עבור SharePoint Enterprise Server 2016 עם עדכון האבטחה של יולי 2022 או עדכון אבטחה מאוחר יותר מותקן:

מזהה האירוע ההודעה
113300000 הערה: סוג לא חוקי: type=XXXXX; assembly=YYYYY, ב- SPUserCodeSerializationBinder. בקר https://go.microsoft.com/fwlink/?LinkId=2196531 לקבלת מידע נוסף וללמוד כיצד לפתור שגיאה זו.
חוה מלכה הערה: קריאה ל- ExecuteRequestInSandBox נכשלה. System.ArgumentException: הסוג לא היה ניתן לאתחול ב- Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.SPUserCodeSerializationBinder.BindToType(String assemblyName, String typeName)
at
…...
חוה מלכה הערה: מקבל הודעת שגיאה עבור Exception System.ArgumentException: הסוג לא היה ניתן לאתחול ב- Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.SPUserCodeSerializationBinder.BindToType(String assemblyName, String typeName)
at
…...

גורם

החל מעדכון האבטחה של מאי 2022, שירות ארגז החול של SharePoint מגביל עוד יותר את הסוגים וההרכבות שהוא מאפשר הפעלה כברירת מחדל.

פתרון

כדי לפתור בעיה זו, עליך לרשום את הסוגים או ההרכבות של ספקים חיצוניים ששירות ארגז החול של SharePoint יאפשר הפעלה. לשם כך, בצע את השלבים הבאים:

  1. עבור SharePoint Foundation 2013, התקן את עדכון האבטחה של יוני 2022 או עדכון אבטחה מאוחר יותר. עבור SharePoint Enterprise Server 2016, התקן את עדכון האבטחה של יולי 2022 או עדכון אבטחה מאוחר יותר.

  2. השתמש בפתרון או ב- Web Part של ארגז חול (Sandbox) המושפע כדי להפעיל את הבעיה.

  3. פתח את יומן הרישום של SharePoint ULS וחפש את מזהה האירוע "6K389". תמצא את ההודעה הבאה עם מזהה אירוע זה:

    הערה

    סוג לא חוקי: type=XXXXX; assembly=YYYYY in SPUserCodeSerializationBinder. בקר https://go.microsoft.com/fwlink/?LinkId=2196531 לקבלת מידע נוסף וללמוד כיצד לפתור שגיאה זו.

  4. שים לב לסוגים ולהרכבות שנחסמו.

  5. פתח את web.config של יישום האינטרנט שבו ממוקמים רכיבי ה- Web Part או הפתרונות של ארגז החול. הנתיב של web.config נראה בדרך כלל כך:

    C:\inetpub\wwwroot\wss\VirtualDirectories\<web application port>

  6. הוסף רכיב AllowedListItems במקטע configuration/SharePoint/SafeMode.

  7. בתוך הרכיב AllowedListItems , הוסף רכיב AllowedItem עם התכונה Name מוגדרת ל- AllowedSandboxType בתבנית הבאה:

  • כדי לבטל את החסימה של סוגים ספציפיים, הוסף רכיבים עם המאפיין סוג באופן הבא:

    <AllowedItem Name="AllowedSandboxType" Type="XXXXX"/>

  • כדי לבטל חסימה של הרכבות ספציפיות, הוסף רכיבים עם המאפיין Assembly באופן הבא:

    <AllowedItem Name="AllowedSandboxType" Assembly="YYYYY"/>

להלן דוגמה:

<SafeMode  

            MaxControls = "200"   

            CallStack = "false" 

            DirectFileDependencies ="10" 

            TotalFileDependencies = "250" 

            AllowPageLevelTrace = "false" 

            ControlCompatMode="false" 

            > 

            <PageParserPaths> 

            </PageParserPaths> 

         <AllowedListItems> 

     <AllowedItem Name="AllowedSandboxType" Type="Microsoft.SharePoint.Portal.WebControls.RSSAggregatorWebPart, Microsoft.SharePoint.Portal, Version=15.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx"/> 

             <AllowedItem Name="AllowedSandboxType" Assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxxxxx"/> 

         </AllowedListItems> 

</SafeMode>