Ich habe eine benutzerdefinierte Assembly für mein SSRS-Projekt erstellt.SSRS überprüfen, ob Benutzer in Gruppe benutzerdefinierte Assembly verwenden
Die Custom-Versammlung hat zwei Funktionen erhalten, IsInGroup
und 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) Die Grundfunktion MyTest
die einen String ‚Hallo Welt‘ aus dem Bericht völlig in Ordnung, den Ausdruck =SSRS_Custom_Functions.Class1.MyTest()
2) Die Funktion IsInGroup
, die einen booleschen Wert zurückgibt, funktioniert nicht. Dies verwendet den Namespace System.Security.Principal
, um zu überprüfen, ob der an die Funktion übergebene Benutzername in der an die Funktion übergebenen Gruppe vorhanden ist. Beim Versuch, es aufzurufen Ausdruck mit =SSRS_Custom_Functions.Class1.IsInGroup(User.User1, "MyGroupName")
, wird der Bericht mit der folgenden Fehlermeldung Rettung:
Antrag auf Genehmigung des Typ System.Security
fehlgeschlagen
Ich habe die Konfigurationsdateien geändert rssrvpolicy.config
in den ReportingServices-Dateipfad und RSPreviewPolicy.config
im VisualStudio-Dateipfad gemäß Microsoft KB920769.
Ich habe eine CodeGroup
hinzugefügt, die FullTrust
zu meiner benutzerdefinierten Baugruppe gibt.
Im Folgenden wurde das politische Ebene Element hinzugefügt:
<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>
Ich bin immer noch wie oben die gleiche Fehlermeldung bekommen.
Sie müssen Ihre Protokolle prüfen, die unter .. \ Reporting Services \ LogFiles angezeigt werden. Sie erhalten dann die anderen DLLs-Informationen, die ebenfalls zur Code Access Security-Gruppe mit FullTrust-Berechtigung hinzugefügt werden müssen. In diesem könnte es System.Security sein. – Igoy