【问题标题】:SSRS External Assembly: Failed to load expression host assemblySSRS 外部程序集:无法加载表达式宿主程序集
【发布时间】: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


    【解决方案1】:

    解决此错误的一种方法

    there is an attribute 允许部分信任的调用者。

    [assembly:AllowPartiallyTrustedCallers]
    

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

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 2016-07-05
      • 2016-04-09
      • 2018-05-27
      • 1970-01-01
      相关资源
      最近更新 更多