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

时间:2019-09-26 16:52:44

标签: c# reporting-services .net-4.6 sharepoint-2016

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

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

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

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

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

1 个答案:

答案 0 :(得分: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 Web配置授予完全信任。

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

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

用Full代替关卡

<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