2008-08-28 29 views
13

He creado un ensamblado y lo he referenciado en mi informe de Reporting Services. Probé el informe localmente (funciona) y luego cargué el informe en un servidor de informes (no funciona).¿Cómo puedo resolver una excepción System.Security.SecurityException con código personalizado en SSRS?

Aquí está el error que arroja el código personalizado que he escrito.

System.Security.SecurityException: Solicitud de permiso de tipo 'System.Security.Permissions.SecurityPermission mscorlib, versión = 2.0.0.0, Culture = neutral , PublicKeyToken = b77a5c561934e089' fallidos . en System.Security.CodeAccessSecurityEngine.CheckNReturnSO (PermissionToken permToken, CodeAccessPermission demanda, StackCrawlMark & stackMark, Int32 unrestrictedOverride, Int32 crear) en System.Security.CodeAccessSecurityEngine.Assert ( tapa CodeAccessPermission, StackCrawlMark & stackMark) en System.Security.CodeAccessPermission.Assert() en [cortó Nombre del método] en ReportExprHostImpl.CustomCodeProxy [cortó Nombre del método] la acción que fracasó fue:. demanda el tipo de la primera autorización que no era: System.Securi ty.Permissions.SecurityPermission la zona de la asamblea que no era : MiEquipo

Este proyecto es algo que heredé, y no estoy muy familiarizado con ella. A pesar de que tienen el código (en la actualidad), de modo que pueda por lo menos trabajar con él :)

Creo que el código que está fallando es la siguiente:

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

Sin embargo, este tipo de cosas está en todas partes demasiado :

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 

Veo que estas cosas son las que Reporting Services no pudo realizar de inmediato.

+0

Esto podría ayudarle a:

Respuesta

8

Esta es la forma en que era capaz de resolver el problema:

  • signo fuertemente el ensamblado personalizado en cuestión
  • modificar el archivo rssrvpolicy.config para agregar permisos para el montaje

        <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 al margen: esta es una excelente manera de obtener el bloque de clave pública de su conjunto VS trick for obtaining the public key token and blob of a signed assembly.

+0

cualquier muestra de la secuencia de comandos powershell ps1 para modificar rssrvpolicy.config? Gracias – Kiquenet

18
<system.web> 

<trust level="Full"/> 

</system.web> 

probar esto en web.config

0

Ejecutar el servicio en modo de administrador

Cuestiones relacionadas