Ho creato un assembly personalizzato per il mio progetto SSRS.SSRS verifica se l'utente nel gruppo utilizza Custom Assembly
l'assembly personalizzato ha 2 funzioni, IsInGroup
e 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 funzione di base MyTest
che restituisce una stringa 'Ciao Mondo' funziona perfettamente bene dal Rapporto utilizzando l'espressione =SSRS_Custom_Functions.Class1.MyTest()
2) La funzione IsInGroup
che restituisce un valore booleano non funziona. Questo utilizza lo spazio dei nomi System.Security.Principal
per verificare se il nome utente passato alla funzione esiste nel gruppo passato alla funzione. Quando provo a invocare usando espressione =SSRS_Custom_Functions.Class1.IsInGroup(User.User1, "MyGroupName")
, il report viene salvataggio con il seguente messaggio di errore:
richiesta di autorizzazione di tipo System.Security fallita
ho modificato i file di configurazione in rssrvpolicy.config
il percorso del file ReportingServices e RSPreviewPolicy.config
nel percorso del file VisualStudio in base a Microsoft KB920769.
Ho aggiunto un CodeGroup
che fornisce FullTrust
all'assembly personalizzato.
Di seguito è stato aggiunto l'elemento livello politico:
<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>
ancora sto ottenendo lo stesso messaggio di errore come sopra.
È necessario controllare i registri, che saranno in .. \ Reporting Services \ LogFiles, forniranno le altre informazioni DLL che devono essere aggiunte al gruppo Code Access Security con autorizzazione FullTrust. In questo potrebbe essere System.Security. – Igoy