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

问题描述 投票:0回答:1

我正在尝试将自定义程序集添加到SSRS SharePoint Integrated报表服务中。但是,自定义dll只会以部分受信任的形式继续返回。

我已经进入rssrvpolicy.config文件,并添加了一个使用UrlMembershipCondition证据的代码组,并将其指向带有DLL的报告Bin(带有PermissionSetName =“ FullTrust”),并且该DLL存储在C中: \ Program Files \ Common files \ microsoft shared \ Web服务器扩展\ 16 \ WebServices \ Reporting \ bin

然后我尝试将DLL添加到GAC,但这又产生了与仅部分受信任时相同的错误。

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

我使用的是.Net 4.6,我知道它对CAS系统有一些更改。

c# reporting-services .net-4.6 sharepoint-2016
1个回答
0
投票

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

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

[assembly: SecurityRules(SecurityRuleSet.Level1)]

此属性应在using语句下方,但在此示例中,在namespace关键字上方。

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

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

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

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

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

用完全替换等级

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

注意:这样做会使Bin文件夹中找到的所有DLL都以完全信任身份运行

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


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

System.Security Critical Attribute

Check for full trust in code

© www.soinside.com 2019 - 2024. All rights reserved.