【发布时间】:2011-08-11 22:25:24
【问题描述】:
使用外部程序集时,在预览窗格的 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 框架配置工具向这些程序集添加了 FullTrust。
要考虑的一件重要事情是,最初我至少可以在我引用的程序集中执行一些简单的代码(仅调用 web 服务会导致 #Error)。但是现在,在添加了完全信任之后,我不能再这样做了,并且一直在出错。
如果我从引用的程序集中删除完全信任(使用 castol 实用程序),并尝试在其中调用 p.Assert(),我会收到以下错误:
SecurityException:请求 SecurityPermission 类型的权限失败。
更新
签署程序集,是导致这篇文章中主要错误的原因(无法加载表达式主机程序集)
【问题讨论】:
标签: c# .net sql-server security reporting-services