我已为我的SSRS项目创建了定制组装。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
它返回一个字符串“你好世界”从报告工作完全正常使用表达式=SSRS_Custom_Functions.Class1.MyTest()
2)返回布尔值的函数IsInGroup
不起作用。这是使用System.Security.Principal
命名空间来检查传递给该函数的用户名是否存在于传递给该函数的组中。当尝试使用表达式=SSRS_Custom_Functions.Class1.IsInGroup(User.User1, "MyGroupName")
调用它,该报告是救助与以下错误消息:类型System.Security许可
请求失败
我已经修改了配置文件rssrvpolicy.config
在根据Microsoft KB920769,VisualStudio文件路径中的ReportingServices文件路径和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>
我仍然得到同样的错误信息如上。
您需要检查日志,该日志位于.. \ Reporting Services \ LogFiles中,它会为您提供其他DLL信息,这些信息也需要通过FullTrust权限添加到Code Access Security组。 在这可以是System.Security。 – Igoy 2012-08-03 10:47:26