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";
}
}
}
MyTest
1)文字列 'Hello World' を返す基本関数は、次の式を使用してレポートから完全に正常に動作します。=SSRS_Custom_Functions.Class1.MyTest()
2)IsInGroup
ブール値を返す関数が機能していません。これはSystem.Security.Principal
名前空間を使用して、関数に渡されたユーザー名が関数に渡されたグループに存在するかどうかを確認しています。expression を使用して呼び出そうとすると=SSRS_Custom_Functions.Class1.IsInGroup(User.User1, "MyGroupName")
、レポートは次のエラー メッセージで救済されます。
タイプ System.Security のアクセス許可の要求が失敗しました
Microsoft KB920769に従ってrssrvpolicy.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>
上記と同じエラーメッセージが引き続き表示されます。