我为我的 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) 返回字符串“Hello World”的基本函数MyTest
使用表达式从报告中完美运行=SSRS_Custom_Functions.Class1.MyTest()
2)IsInGroup
返回布尔值的函数不起作用。这是使用System.Security.Principal
命名空间来检查传递给函数的用户名是否存在于传递给函数的组中。当尝试使用 expression 调用它时=SSRS_Custom_Functions.Class1.IsInGroup(User.User1, "MyGroupName")
,报告会出现以下错误消息:
请求 System.Security 类型的权限失败
我已经根据Microsoft KB920769rssrvpolicy.config
修改了 ReportingServices 文件路径和VisualStudio 文件路径中的配置文件。RSPreviewPolicy.config
我添加了一个CodeGroup
给FullTrust
我的自定义程序集。
以下内容已添加到策略级别元素中:
<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>
我仍然收到与上述相同的错误消息。