Stworzyłem niestandardowe Zgromadzenie dla mojego projektu SSRS.Sprawdzanie SSRS, czy użytkownik w grupie przy użyciu niestandardowego zestawu
Custom Zgromadzenie ma 2 funkcje, IsInGroup
i 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) Podstawową funkcją MyTest
która zwraca ciąg znaków 'Hello World' działa perfekcyjnie z raportu za pomocą wyrażenia =SSRS_Custom_Functions.Class1.MyTest()
2) Funkcja IsInGroup
, która zwraca wartość boolowską, nie działa. Jest to użycie przestrzeni nazw System.Security.Principal
do sprawdzenia, czy nazwa użytkownika przekazana do funkcji istnieje w grupie przekazanej do funkcji. Gdy próbuje wywołać go za pomocą wyrażenia =SSRS_Custom_Functions.Class1.IsInGroup(User.User1, "MyGroupName")
, raport jest ratowanie z następującym komunikatem o błędzie:
wniosek o pozwolenie typu System.security udało
mam zmodyfikowane pliki konfiguracyjne w rssrvpolicy.config
Ścieżka pliku ReportingServices i RSPreviewPolicy.config
w ścieżce pliku VisualStudio zgodnie z Microsoft KB920769.
Dodałem CodeGroup
, który daje FullTrust
do mojego zestawu niestandardowego.
Poniższa został dodany do elementu poziomie polityki:
<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>
ja wciąż otrzymuję ten sam komunikat o błędzie, jak powyżej.
Musisz sprawdzić swoje dzienniki, które będą w .. \ Reporting Services \ LogFiles, to da ci inne informacje DLL, które również muszą zostać dodane do grupy Security Access Code z uprawnieniami FullTrust. W tym może być System.Security. – Igoy