Come posso risolvere un Sistema.Di sicurezza.SecurityException con codice personalizzato in SSRS?

StackOverflow https://stackoverflow.com/questions/32428

Domanda

Ho creato un assieme e di riferimento nel mio report di Reporting Services.Ho testato il report in locale (opere), e poi ho caricato il report in un server (non funziona).

Qui è l'errore che viene generato dal codice personalizzato che ho scritto.

Sistema.Di sicurezza.SecurityException:Richiesta di autorizzazione di tipo 'Sistema.Di sicurezza.Le autorizzazioni.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' non è riuscito.a Sistema.Di sicurezza.CodeAccessSecurityEngine.CheckNReturnSO(PermissionToken permToken, CodeAccessPermission la domanda, StackCrawlMark& stackMark, Int32 unrestrictedOverride, Int32 creare) a Sistema.Di sicurezza.CodeAccessSecurityEngine.Assert(CodeAccessPermission cap, StackCrawlMark& stackMark) a Sistema.Di sicurezza.CodeAccessPermission.Assert() a [Snipped Nome di Metodo] a ReportExprHostImpl.CustomCodeProxy.[Snipped Nome di Metodo] L'azione non riuscita era:Domanda Il tipo di prima l'autorizzazione non riuscita era:Sistema.Di sicurezza.Le autorizzazioni.SecurityPermission L'Orario dell'assemblea che non è riuscito stato:MyComputer

Questo progetto è una cosa che ho ereditato, e io non sono intimamente familiare con esso.Anche se io ho il codice (ora), così almeno posso lavorare :)

Credo che il codice di errore è questo:

    Dim fio As System.Security.Permissions.FileIOPermission = New System.Security.Permissions.FileIOPermission(Security.Permissions.PermissionState.Unrestricted)
    fio.Assert()

Tuttavia, questo tipo di roba è ovunque anche:

Private Declare Function CryptHashData Lib "advapi32.dll" (ByVal hhash As Integer, ByVal pbData As String, ByVal dwDataLen As Integer, ByVal dwFlags As Integer) As Integer

Posso vedere una di queste cose che di Reporting Services non ospitare, fuori dalla scatola.

È stato utile?

Soluzione 2

Questo è come sono stato in grado di risolvere il problema:

  • fortemente firmare l'assembly personalizzato in questione
  • modificare il rssrvpolicy.file di configurazione per aggiungere autorizzazioni per il montaggio

                        <CodeGroup
                            class="UnionCodeGroup"
                            version="1"
                            PermissionSetName="FullTrust"
                            Name="Test"
                            Description="This code group grants the Test code full trust. ">
                            <IMembershipCondition
                                    class="StrongNameMembershipCondition"
                                    version="1"
                                    PublicKeyBlob="0024000004800000940100000602000000240000575341310004000001000100ab4b135615ca6dfd586aa0c5807b3e07fa7a02b3f376c131e0442607de792a346e64710e82c833b42c672680732f16193ba90b2819a77fa22ac6d41559724b9c253358614c270c651fad5afe9a0f8cbd1e5e79f35e0f04cb3e3b020162ac86f633cf0d205263280e3400d1a5b5781bf6bd12f97917dcdde3c8d03ee61ccba2c0"
                                />
                        </CodeGroup>
    

Nota a margine:qui è un ottimo modo per ottenere la chiave pubblica blob della vostra assemblea VS trucco per ottenere il token di chiave pubblica e blob di un assembly firmato.

Altri suggerimenti

<system.web>

<trust level="Full"/>

</system.web>

provare questo nel web.config

Eseguire il servizio in modalità amministratore

 <CodeGroup class="FirstMatchCodeGroup" version="1" PermissionSetName="FullTrust">

Per me, la soluzione è stata cambiare la riga precedente in rssrvpolicy.config da "None" per "FullTrust".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top