Я создал пользовательскую сборку для своего проекта SSRS.
Пользовательская сборка имеет 2 функции: IsInGroup
и 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 )Базовая функция MyTest
, которая возвращает строку «Hello World», прекрасно работает из отчета с использованием выражения=SSRS_Custom_Functions.Class1.MyTest()
2 )Функция IsInGroup
, которая возвращает логическое значение, не работает. Это использует пространство имен System.Security.Principal
, чтобы проверить, существует ли имя пользователя, переданное функции, в группе, переданной функции. При попытке вызвать его с помощью выражения =SSRS_Custom_Functions.Class1.IsInGroup(User.User1, "MyGroupName")
отчет вылетает со следующим сообщением об ошибке:
request for the permission of type System.Security failed
Я изменил файлы конфигурации rssrvpolicy.config
в пути к файлу ReportingServices и RSPreviewPolicy.config
в пути к файлу VisualStudio в соответствии с Microsoft KB920769 .
Я добавил CodeGroup
, который дает FullTrust
моей пользовательской сборке.
В элемент уровня политики добавлено следующее:
Я все еще получаю то же сообщение об ошибке, что и выше.