Błąd "Nie można rozpoznać typu" podczas używania rozwiązania w trybie piaskownicy lub składnika Web Part (KB5015556)

Dotyczy
SharePoint Foundation 2013 SP1 SharePoint Server 2016

Objawy

Podczas korzystania z rozwiązania w trybie piaskownicy lub składnika Web Part mogą być wyświetlane komunikaty o błędach dzienników systemu zunifikowanego rejestrowania (ULS) programu SharePoint podobne do poniższych. Te komunikaty wskazują, że niektóre rozwiązania lub składniki Web Part w trybie piaskownicy są zablokowane.

W przypadku programów SharePoint Foundation 2013 i SharePoint Enterprise Server 2016 z zainstalowaną aktualizacją zabezpieczeń z maja 2022 r.:

Identyfikator zdarzenia Wiadomość
ajrme powiedział: Uwaga: Wywołanie ExecuteRequestInSandBox nie powiodło się. System.ArgumentException: Typ nie był rozpoznawany w Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.SPUserCodeSerializationBinder.BindToType(String assemblyName, String typeName)
at
…...
ajlz0 powiedział: Uwaga: Komunikat o błędzie dotyczący wyjątku System.ArgumentException: Typ nie był rozpoznawany w Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.SPUserCodeSerializationBinder.BindToType(String assemblyName, String typeName)
at
…...

W przypadku programu SharePoint Foundation 2013 z zainstalowaną aktualizacją zabezpieczeń z czerwca 2022 r. lub nowszą aktualizacją zabezpieczeń oraz dla programu SharePoint Enterprise Server 2016 z zainstalowaną aktualizacją zabezpieczeń z lipca 2022 r. lub nowszą aktualizacją zabezpieczeń:

Identyfikator zdarzenia Wiadomość
6K389 powiedział: Uwaga: Nieprawidłowy typ: type=XXXXX; assembly=YYYYY, w SPUserCodeSerializationBinder. Odwiedź https://go.microsoft.com/fwlink/?LinkId=2196531, aby uzyskać więcej informacji i dowiedzieć się, jak rozwiązać ten błąd.
ajrme powiedział: Uwaga: Wywołanie ExecuteRequestInSandBox nie powiodło się. System.ArgumentException: Typ nie był rozpoznawany w Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.SPUserCodeSerializationBinder.BindToType(String assemblyName, String typeName)
at
…...
ajlz0 powiedział: Uwaga: Komunikat o błędzie dotyczący wyjątku System.ArgumentException: Typ nie był rozpoznawany w Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.SPUserCodeSerializationBinder.BindToType(String assemblyName, String typeName)
at
…...

Przyczyna

Począwszy od aktualizacji zabezpieczeń z maja 2022 r., usługa piaskownicy programu SharePoint dodatkowo ogranicza typy i zestawy, które mogą być uruchamiane domyślnie.

Rozwiązanie

Aby rozwiązać ten problem, musisz zarejestrować typy lub zestawy innych firm, których uruchamianie będzie dozwolone przez usługę piaskownicy programu SharePoint. W tym celu wykonaj następujące czynności:

  1. W przypadku programu SharePoint Foundation 2013 zainstaluj aktualizację zabezpieczeń z czerwca 2022 r. lub nowszą aktualizację zabezpieczeń. W przypadku programu SharePoint Enterprise Server 2016 zainstaluj aktualizację zabezpieczeń z lipca 2022 r. lub nowszą.

  2. Użyj rozwiązania lub składnika Web Part w piaskownicy, na które ma wpływ problem, aby wywołać problem.

  3. Otwórz dziennik systemu ULS programu SharePoint i poszukaj zdarzenia o identyfikatorze "6K389". Zostanie wyświetlony następujący komunikat z tym identyfikatorem zdarzenia:

    Uwaga

    Nieprawidłowy typ: type=XXXXX; assembly=YYYYY w SPUserCodeSerializationBinder. Odwiedź https://go.microsoft.com/fwlink/?LinkId=2196531, aby uzyskać więcej informacji i dowiedzieć się, jak rozwiązać ten błąd.

  4. Zwróć uwagę na blokowane typy i zespoły.

  5. Otwórz plik web.config aplikacji internetowej, w której znajdują się rozwiązania lub składniki Web Part w trybie piaskownicy. Ścieżka web.config zwykle wygląda następująco:

    C:\inetpub\wwwroot\wss\VirtualDirectories\<port aplikacji sieci Web>

  6. Dodaj element AllowedListItems w sekcji configuration/SharePoint/SafeMode.

  7. Wewnątrz elementu AllowedListItems dodaj element AllowedItem z atrybutem Name ustawionym na AllowedSandboxType w następującym formacie:

  • Aby odblokować określone typy, dodaj elementy z właściwością Type w następujący sposób:

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

  • Aby odblokować określone zestawy, dodaj elementy z właściwością Assembly w następujący sposób:

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

Oto przykład:

<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>