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

时间:2011-08-11 22:25:24

标签: c# .net sql-server security reporting-services

使用外部程序集时,在预览窗格的SSRS报告中获取此消息。

  

无法加载表达式主机程序集。详细信息:该程序集不允许部分信任的呼叫者。

我花了一天时间解决这个问题(最初以#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添加到这些程序集中。

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

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

  

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

更新

签署程序集,是导致此帖子中的主要错误的原因(无法加载表达式主机程序集)

1 个答案:

答案 0 :(得分:3)

解决此错误的一种方法

there is an attribute允许部分信任的来电者。

[assembly:AllowPartiallyTrustedCallers]

这仍然无法解决我的更大问题,但这个帖子中的错误消失了......需要做更多的研究。仍然不确定哪个“来电者”是部分信任的,因为我的外部装配完全信任。