SSRS外部程序集: 加载表达式宿主程序集失败

3
在使用外部程序集时,在SSRS报表的预览窗格中会出现此消息。 无法加载表达式宿主程序集。详细信息:该程序集不允许部分信任的调用者。 我花了一天时间解决这个问题(最初出现为#Error)。
最初调用外部程序集是没有问题的。只有当外部程序集调用Web服务时,才会出现#Error。因此,我按照这些说明进行操作,并添加了用于调用服务的权限代码:
var urlRegEx = new Regex(@"http://mydevserver\.com/.*");
var p = new WebPermission(NetworkAccess.Connect,urlRegEx);
p.Assert();

p.Assert会抛出安全异常。因此,我最后尝试的一步是尝试通过以下方式向执行上述代码的程序集添加完全信任:

cespol -af myAssembly.dll //after strongly signing it

之前我似乎已经完全信任了它,但现在我收到了上述信息。

我不确定报告中所指的“表达式主机程序集”是什么,或者哪个程序集出了问题。我还按照上面链接中的说明为我的报告引用的2个程序集添加了CodeGroups(url),并使用Microsoft Framework配置工具将FullTrust也添加到了这些程序集中。

需要考虑的一件重要事情是,最初我至少可以在我的引用程序集中执行一些简单的代码(只调用一个Web服务会导致#Error)。但是现在,在添加了完全信任后,我不能再这样做了,并且不断收到上述错误。

如果我从引用程序集中删除完全信任(使用castol实用程序),并尝试调用其中的p.Assert(),我会收到以下错误:

SecurityException: Request for the permission of type SecurityPermission failed.

更新

对程序集进行签名是导致本文中主要错误(无法加载表达式主机程序集)的原因。

1个回答

3

解决此错误的一种方法是

有一个属性允许部分受信任的调用方。

[assembly:AllowPartiallyTrustedCallers]

这仍然没有解决我的更大问题,但是这个线程中的错误消失了...需要做更多的研究。我仍然不确定哪个“调用者”是部分受信任的,因为我的外部程序集具有完全信任。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接