我已爲我的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