SSRS 自定义程序集未接收完全信任



我正在尝试将自定义程序集添加到 SSRS SharePoint 集成报告服务。无论如何,自定义 dll 如何继续返回仅部分受信任。

我已经进入了rssrvpolicy.config文件,并添加了一个使用UrlMemberCondition证据的代码组,并将其指向DLL所在的报告箱,PermissionSetName="FullTrust",并且DLL存储在C:\Program Files\Common files\microsoft shared\Web Server Extensions\16\WebServices\Reporting\bin中

然后,我尝试将 DLL 添加到 GAC,但这也给出了相同的错误,因为仅部分受信任。

出现此错误的原因是因为我尝试使用执行日志记录的完全受信任的 DLL(在 GAC 中(。看来 GAC 中的日志记录 DLL 是受信任的,所以我不明白为什么这个 DLL 在 GAC 中或明确被告知受信任时不受信任。

我正在使用.Net 4.6,我知道它对CAS系统进行了一些更改。

我终于能够解决这个问题了。在这种情况下,我的解决方案是使用 3.0 样式的 CAS 或 1 级(Microsoft 文档(。我不知道这是否是最好的解决方案,但这是一个可行的解决方案。

第 1 步: 在每个.cs文件顶部的项目中,请确保使用以下属性指定要使用级别 1 安全规则集:

[assembly: SecurityRules(SecurityRuleSet.Level1)]

此属性应位于 using 语句下方,但位于命名空间关键字上方,如以下示例所示。

using Microsoft.SharePoint.Client;
[assembly: SecurityRules(SecurityRuleSet.Level1)]
namespace something.something{
...YOUR CODE HERE...
}

第 2 步: 了解您是在 SharePoint 集成模式下还是在本机模式下使用报告服务。

如果您使用的是 SharePoint 2016 集成模式,请导航到以下位置并将 DLL 复制到文件夹中。

C:Program FilesCommon Filesmicrosoft sharedWeb Server Extensions16WebServicesReportingbin

如果您使用的是本机模式,请导航到以下位置并将其复制到文件夹中。

C:Program FilesMicrosoft SQL Server

然后浏览每个编号的文件夹(IE 90,100,130等(,直到找到Bin文件夹。

我建议将自定义程序集放在此处,而不是 GAC,因为通过 Reporting Services Web 配置很容易授予完全信任。

第 3 步: 最后,从 bin 文件夹向上回退一个级别,到您看到报告服务的 web.config 文件的位置。在报告服务中查找以下标记

<trust level="something" originUrl""/>

将级别替换为"完整">

<trust level="Full" originUrl""/>

注意:据我所知,这样做将使在 Bin 文件夹中找到的所有 DLL 以完全信任运行

执行 IISReset 并测试您的自定义程序集。您应该能够拥有完全的信任并避免任何可怕的 .Net 4.0 透明代码问题。


我不能保证这对每个人都有用。整个 .Net 4.6 CAS 设置非常复杂且难以理解。以下是帮助我找到这个答案的Microsoft文档列表。

系统安全关键属性

检查代码是否完全信任

最新更新