SSRS外部程序集:无法加载表达式主机程序集

在使用外部程序集时,请在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 Configuration工具将FullTrust添加到这些程序集中。

需要考虑的一件重要的事情是,最初我至少可以在被引用的程序集中执行一些简单的代码(只调用webservice会导致#Error)。 但是现在,在完全信任之后,我不能再那样做了,并且继续超出错误。

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

SecurityException:对类型SecurityPermission权限的请求失败。

UPDATE

签署程序集,是什么导致这篇文章中的主要错误(无法加载表达式主机程序集)


解决这个错误的一种方法

有一个属性允许部分受信任的呼叫者。

[assembly:AllowPartiallyTrustedCallers]

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

链接地址: http://www.djcxy.com/p/57491.html

上一篇: SSRS External Assembly: Failed to load expression host assembly

下一篇: Strong named assemblies in Windows Forms .NET