繁体   English   中英

SSRS 自定义程序集未获得完全信任

[英]SSRS Custom Assembly Doesn't Recieve Full Trust

我正在尝试将自定义程序集添加到 SSRS SharePoint 集成报告服务中。 然而,定制的 dll 不断返回,因为它只是部分受信任。

I have already gone into the rssrvpolicy.config file and added a code group that uses the UrlMembershipCondition evidence and pointed it to the reporting Bin where the DLL is, with PermissionSetName="FullTrust", and the DLL is stored in the C:\Program Files\Common files\microsoft shared\Web Server Extensions\16\WebServices\Reporting\bin

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

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

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

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

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

[assembly: SecurityRules(SecurityRuleSet.Level1)]

此属性应 go 在您的 using 语句下方,但在此示例的命名空间关键字上方。

using Microsoft.SharePoint.Client;

[assembly: SecurityRules(SecurityRuleSet.Level1)]

namespace something.something{
   ...YOUR CODE HERE...
}

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

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

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\WebServices\Reporting\bin

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

C:\Program Files\Microsoft SQL Server

然后 go 遍历每个编号的文件夹(IE 90,100,130 等),直到找到 Bin 文件夹。

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

第 3 步:最后 go 将 bin 文件夹中的一级备份到您看到报告服务的 web.config 文件的位置。 在报告服务中找到以下标签

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

用 Full 替换关卡

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

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

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


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

System.Security 关键属性

检查对代码的完全信任

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM