使用外部程序集时,在预览 Pane 的 SSRS 报告中获取此消息。
Failed to load expression host assembly. Details: That assembly does not allow partially trusted callers.
我已经花了一天时间解决这个问题(最初是作为#Error 开始的)
最初调用外部程序集没问题。每当外部程序集调用 Web 服务时,我都会收到#Error。所以我关注了these directions ,并添加代码以添加调用服务的权限:
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 Configuration 工具向这些程序集添加了 FullTrust。
需要考虑的一件重要事情是,最初我至少可以在我引用的程序集中执行一些简单的代码(仅调用网络服务会导致#Error)。但是现在,在添加完全信任之后,我不能再这样做了,并且不断出现上述错误。
如果我从引用的程序集中删除完全信任(使用 castol 实用程序),并尝试在其中调用调用 p.Assert(),我会收到以下错误:
SecurityException: Request for the permission of type SecurityPermission failed.
更新
对程序集进行签名,是导致这篇文章中主要错误的原因(无法加载表达式宿主程序集)
最佳答案
解决此错误的一种方法
there is an attribute允许部分信任的调用者。
[assembly:AllowPartiallyTrustedCallers]
这仍然没有解决我更大的问题,但是这个线程中的错误消失了。需要做更多的研究。仍然不确定哪个“调用者”是部分信任的,因为我的外部程序集完全信任。
关于c# - SSRS 外部组件 : Failed to load expression host assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7033669/