Μετάβαση στο κύριο περιεχόμενο
Υποστήριξη
Είσοδος με Microsoft
Είσοδος ή δημιουργία λογαριασμού.
Γεια σας,
Επιλέξτε διαφορετικό λογαριασμό.
Έχετε πολλούς λογαριασμούς
Επιλέξτε τον λογαριασμό με τον οποίο θέλετε να εισέλθετε.

Συμπτώματα

Μετά την εγκατάσταση οποιασδήποτε από τις ενημερωμένες εκδόσεις ασφαλείας του σεπτεμβρίου 2018 του .NET Framework για την επίλυση του CVE-2018-8421 (ευπάθεια εκτέλεσης απομακρυσμένου κώδικα του .NET Framework), οι ροές εργασίας out-of-the-box του SharePoint σταματούν να λειτουργούν. Όταν παρουσιαστεί αυτό το πρόβλημα, καταγράφεται μια καταχώρηση σφάλματος που μοιάζει με την παρακάτω:

<Date> <Time> w3wp.exe (0x1868) 0x22FC SharePoint Foundation Workflow Infrastructure 72fs Unexpected RunWorkflow: Microsoft.SharePoint.SPException: <Error><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeBinaryOperatorExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeBinaryOperatorExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeBinaryOperatorExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeBinaryOperatorExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeBinaryOperatorExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeBinaryOperatorExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1" Text="Type System.CodeDom.CodeBinaryOperatorExpression is not marked as authorized in the application configuration file." /><CompilerError Line="-1" Column="-1"…

Η καταχώρηση σφάλματος υποδηλώνει ότι το System. CodeDom. CodeBinaryOperatorExpression δεν περιλαμβάνεται στους εγκεκριμένους τύπους.

Για περισσότερες πληροφορίες σχετικά με τις ενημερώσεις ασφαλείας του Σεπτεμβρίου .NET, μεταβείτε σε αυτήν τη σελίδα ιστολογίου του Microsoft .NET.

Αιτία

Η υποδομή ροής εργασίας (WF) εκτελεί ροές εργασίας μόνο όταν όλοι οι εξαρτημένοι τύποι και συγκροτήσεις είναι εξουσιοδοτημένοι στο αρχείο config .NET (ή έχουν προστεθεί ρητά μέσω κώδικα) στο παρακάτω δέντρο:

<configuration>

<System.Workflow.ComponentModel.WorkflowCompiler>

<authorizedTypes>

<targetFx>

Ωστόσο, μετά την ενημέρωση, ορισμένοι τύποι που χρησιμοποιούνται από τις ροές εργασίας out-of-Box του SharePoint που προηγουμένως δεν απαιτούνταν απαιτούνται τώρα.

Επίλυση

Για να επιλύσετε αυτό το πρόβλημα, εφαρμόστε τις κατάλληλες ενημερώσεις ασφάλειας και ασφαλείας από τα παρακάτω άρθρα της Γνωσιακής βάσης:

4461501 Περιγραφή της ενημέρωσης ασφαλείας για το SharePoint Enterprise Server 2016:13 Νοεμβρίου 2018 4461508 Νοεμβρίου 13, 2018, αθροιστική ενημέρωση για το SharePoint Foundation 2013 (KB4461508) 4461510 Νοεμβρίου 13, 2018, αθροιστική ενημέρωση για το SharePoint Enterprise Server 2013 (KB4461510)   4011713 Νοεμβρίου 13, 2018, ενημέρωση για το SharePoint Foundation 2010 (KB4011713) 4461528 Νοεμβρίου 13, 2018, αθροιστική ενημέρωση για τον SharePoint Server 2010 (KB4461528)

Σημειώσεις

  • Μετά την εγκατάσταση της ενημέρωσης, ο οδηγός ρύθμισης παραμέτρων των προϊόντων του SharePoint πρέπει να εκτελεστεί για να εφαρμοστεί πλήρως η επιδιόρθωση.

  • Ορισμένες ενέργειες άλλων κατασκευαστών ή προσαρμοσμένων ροών εργασίας ενδέχεται να έχουν πρόσθετες εξαρτήσεις. Εάν αντιμετωπίζετε μια συμπεριφορά που είναι παρόμοια με αυτό το πρόβλημα, αλλά δεν περιγράφεται σε αυτό το άρθρο, συμβουλευτείτε τον προγραμματιστή ενέργειας ροής εργασίας για βοήθεια.

Λύση

Για να επιλύσετε αυτό το πρόβλημα, προσθέστε ρητά τους απαραίτητους τύπους στο αρχείο Web. config όλων των εφαρμογών. Παρόλο που παρέχονται τα μη αυτόματα βήματα, συνιστάται να χρησιμοποιήσετε τη μέθοδο δέσμης ενεργειών. 

Για να επιλύσετε αυτό το πρόβλημα, προσθέστε ρητά τους απαραίτητους τύπους στα αρχεία Web. config όλων των εφαρμογών.

Για το SharePoint 2013 και νεότερες εκδόσεις

Για το SharePoint 2013 και νεότερες εκδόσεις, προσθέστε τις ακόλουθες γραμμές:

<authorizedType Assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeBinaryOperatorExpression" Authorized="True" />

<authorizedType Assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodePrimitiveExpression" Authorized="True" />

<authorizedType Assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeMethodInvokeExpression" Authorized="True" />

<authorizedType Assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeMethodReferenceExpression" Authorized="True" />

<authorizedType Assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeFieldReferenceExpression" Authorized="True" />

<authorizedType Assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeThisReferenceExpression" Authorized="True" />

<authorizedType Assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodePropertyReferenceExpression" Authorized="True" />  

Για εκδόσεις του SharePoint παλαιότερες από το SharePoint 2013

Για τις εκδόσεις του SharePoint που είναι παλαιότερες από το 2013, προσθέστε τις παρακάτω γραμμές αντί για:

<authorizedType Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeBinaryOperatorExpression" Authorized="True" />

<authorizedType Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodePrimitiveExpression" Authorized="True" />

<authorizedType Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeMethodInvokeExpression" Authorized="True" />

<authorizedType Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeMethodReferenceExpression" Authorized="True" />

<authorizedType Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeFieldReferenceExpression" Authorized="True" />

<authorizedType Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodeThisReferenceExpression" Authorized="True" />

<authorizedType Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" NameSpace="System.CodeDom" TypeName="CodePropertyReferenceExpression" Authorized="True" />

Συνιστούμε να εκτελέσετε την ακόλουθη δέσμη ενεργειών αντί να τροποποιήσετε απευθείας τα υπάρχοντα αρχεία.

Σημείωση Ορισμένοι μηχανισμοί ροής εργασίας άλλων κατασκευαστών ενδέχεται να απαιτούν την προσθήκη επιπλέον τύπων. Σε αυτή την περίπτωση, επικοινωνήστε με τον προμηθευτή σας για πληροφορίες σχετικά με τους απαιτούμενους τύπους και, στη συνέχεια, προσαρμόστε τη δέσμη ενεργειών ανάλογα.

Η ακόλουθη δέσμη ενεργειών αλλάζει το Web. config για όλες τις εφαρμογές Web για να προσθέσει τις απαραίτητες καταχωρήσεις. Αυτή η δέσμη ενεργειών προσθέτει αυτούς τους τύπους για υπάρχουσες εφαρμογές Web και για εφαρμογές που δημιουργούνται μετά την εκτέλεση της δέσμης ενεργειών. Η δέσμη ενεργειών πρέπει να εκτελείται μόνο μία φορά σε οποιονδήποτε διακομιστή περιβάλλοντος χρήστη Web στο σύμπλεγμα (θα ενημερώσει όλους τους διακομιστές).

<#

 This script adds the entries to all web.config files for all web applications in the farm.

 Run this script as Farm Administrator in one of the WFEs.

 This script has to run only one time.

SUMMARY:

This script uses the native SharePoint SPWebConfigModification API to deploy new updates to the web.config file for each web application on each server in the farm.  Servers that are added at a later date will also get the updates applied because the API configuration is persisted in the config database.  This API does not update the web.config for the central administration web application.

If you are running workflows on the central admin web application, you will have to manually update the web.config by using the steps in the referenced blog.

==============================================================

#>

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-Null

function Add-CodeDomAuthorizedType

{

    <#

    .Synopsis

       Adds the necessary authorizedType elements to all web.config files for all non-central admin web applications

 

    .DESCRIPTION

       Adds the necessary authorizedType elements to all web.config files for all non-central admin web applications

 

    .EXAMPLE

       Add-CodeDomAuthorizedType

 

    #>

    [CmdletBinding()]

    param

    (

    )

    begin

    {

        $farmMajorVersion = (Get-SPFarm -Verbose:$false ).BuildVersion.Major

        $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService

        $typeNames = @( "CodeBinaryOperatorExpression", "CodePrimitiveExpression", "CodeMethodInvokeExpression", "CodeMethodReferenceExpression", "CodeFieldReferenceExpression","CodeThisReferenceExpression", "CodePropertyReferenceExpression")

   

    }

    process

    {

        if( @($contentService.WebConfigModifications | ? { $_.Name -eq "NetFrameworkAuthorizedTypeUpdate" }).Count -gt 0 )

        {

            Write-Warning "Existing NetFrameworkAuthorizedTypeUpdate entries found, this script has to be run only one time per farm."

            return

        }

        if( $farmMajorVersion -le 14 ) # 2010, 2007

        {

            foreach( $typeName in $typeNames )

            {

                # System, Version=2.0.0.0

                $netFrameworkConfig = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification

                $netFrameworkConfig.Path     = "configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes"

                $netFrameworkConfig.Name     = "authorizedType[@Assembly='System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'][@Namespace='System.CodeDom'][@TypeName='{0}'][@Authorized='True']" -f $typeName

                $netFrameworkConfig.Owner    = "NetFrameworkAuthorizedTypeUpdate"

                $netFrameworkConfig.Sequence = 0

                $netFrameworkConfig.Type     = [Microsoft.SharePoint.Administration.SPWebConfigModification+SPWebConfigModificationType]::EnsureChildNode

                $netFrameworkConfig.Value    = '<authorizedType Assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Namespace="System.CodeDom" TypeName="{0}" Authorized="True"/>' -f $typeName

           

                $contentService.WebConfigModifications.Add($netFrameworkConfig);

            }

        }

        else # 2013+

        {

            foreach( $typeName in $typeNames )

            {

                # System, Version=4.0.0.0

                $netFrameworkConfig = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification

                $netFrameworkConfig.Path     = "configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes/targetFx"

                $netFrameworkConfig.Name     = "authorizedType[@Assembly='System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'][@Namespace='System.CodeDom'][@TypeName='{0}'][@Authorized='True']" -f $typeName

                $netFrameworkConfig.Owner    = "NetFrameworkAuthorizedTypeUpdate"

                $netFrameworkConfig.Sequence = 0

                $netFrameworkConfig.Type     = [Microsoft.SharePoint.Administration.SPWebConfigModification+SPWebConfigModificationType]::EnsureChildNode

                $netFrameworkConfig.Value    = '<authorizedType Assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Namespace="System.CodeDom" TypeName="{0}" Authorized="True"/>' -f $typeName

           

                $contentService.WebConfigModifications.Add($netFrameworkConfig);

            }

        }

        Write-Verbose "Updating web.configs"

        $contentService.Update()

        $contentService.ApplyWebConfigModifications();

    }

    end

    {

    }   

}

function Remove-CodeDomAuthorizedType

{

    <#

    .Synopsis

       Removes any web configuration entries owned by "NetFrameworkAuthorizedTypeUpdate"

 

    .DESCRIPTION

       Removes any web configuration entries owned by "NetFrameworkAuthorizedTypeUpdate"

 

    .EXAMPLE

        Remove-CodeDomAuthorizedType

    #>

    [CmdletBinding()]

    param()

    begin

    {

        $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService

    }

    process

    {

        $webConfigModifications = @($contentService.WebConfigModifications | ? { $_.Owner -eq "NetFrameworkAuthorizedTypeUpdate" })

        foreach ( $webConfigModification in $webConfigModifications )

        {

            Write-Verbose "Found instance owned by NetFrameworkAuthorizedTypeUpdate"

            $contentService.WebConfigModifications.Remove( $webConfigModification ) | Out-Null

        }

        

        if( $webConfigModifications.Count -gt 0 )

        {

            $contentService.Update()

            $contentService.ApplyWebConfigModifications()

        }

    }

    end

    {

    }   

}

# The following command will get the timerjob responsible for the web.config change deployment

# Get-SPTimerJob | ? { $_.Name -eq "job-webconfig-modification" }

 

# The following command will make the appropriate changes

Add-CodeDomAuthorizedType

# Remove the following command if you have to remove the web.config updates, you can use this function to retract the changes

# Remove-CodeDomAuthorizedType

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

Οι κοινότητες σάς βοηθούν να κάνετε και να απαντάτε σε ερωτήσεις, να δίνετε σχόλια και να ακούτε από ειδικούς με πλούσια γνώση.

Σας βοήθησαν αυτές οι πληροφορίες;

Πόσο ικανοποιημένοι είστε με τη γλωσσική ποιότητα;
Τι επηρέασε την εμπειρία σας;
Πατώντας "Υποβολή" τα σχόλια σας θα χρησιμοποιηθούν για τη βελτίωση των προϊόντων και των υπηρεσιών της Microsoft. Ο διαχειριστής IT θα έχει τη δυνατότητα να συλλέξει αυτά τα δεδομένα. Δήλωση προστασίας προσωπικών δεδομένων.

Σας ευχαριστούμε για τα σχόλιά σας!

×