He creado un ensamblaje personalizado para mi proyecto SSRS.SSRS comprobar si el usuario en el grupo usando el ensamblaje personalizado
La Asamblea personalizada tiene 2 funciones, IsInGroup
y MyTest
:
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Principal;
namespace SSRS_Custom_Fuctions
{
public class Class1
{
public static bool IsInGroup(string user, string group)
{
using (var identity = new WindowsIdentity(user))
{
var principal = new WindowsPrincipal(identity);
return principal.IsInRole(group);
}
}
public static string MyTest()
{
return "Hello World";
}
}
}
1) La función básica MyTest
que devuelve una cadena 'Hola mundo' funciona perfectamente bien desde el informe utilizando la expresión =SSRS_Custom_Functions.Class1.MyTest()
2) La función IsInGroup
que devuelve un valor booleano no funciona. Esto está usando el espacio de nombre System.Security.Principal
para verificar si el nombre de usuario pasado a la función existe en el grupo pasado a la función. Al intentar invocar utilizando la expresión =SSRS_Custom_Functions.Class1.IsInGroup(User.User1, "MyGroupName")
, el informe está rescatando a cabo con el siguiente mensaje de error:
solicitud de permiso de tipo System.Security no
He modificado los archivos de configuración en rssrvpolicy.config
la ruta del archivo ReportingServices y RSPreviewPolicy.config
en la ruta del archivo VisualStudio según Microsoft KB920769.
He añadido un CodeGroup
que da FullTrust
a mi montaje personalizado.
además, se han añadido al elemento plano de las políticas:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="SSRS_Custom_Fuctions"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\SSRS_Custom_Fuctions.dll"/>
</CodeGroup>
todavía estoy recibiendo el mismo mensaje de error que el anterior.
Debe verificar sus registros, que estarán en .. \ Reporting Services \ LogFiles, le dará la otra información de DLL que también debe agregarse al grupo de seguridad de acceso de código con permiso de FullTrust. En esto podría ser System.Security. – Igoy