c# - SSRS 外部组件 : Failed to load expression host assembly

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

使用外部程序集时,在预览 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/

相关文章:

c# - 使用 Moq 确定方法是否被调用

c# - 为什么连续抛出2个异常不会产生无法访问的代码警告?

c# - C/C++ - 如何将 Buffer.BlockCopy (C#) 转换为 C/C++

c# - 带有标题文本框的 AJAXFileUpload

.net - 进度条四舍五入到最接近的整数 - VB.NET

mysql - 将 Microsoft SQL Server 数据库复制到 Linux 上的 MySQL/PostgreSQL 的选项

c# - 更改 OpenFileDialog 的路径

c# - 如何检查事件处理程序是否已注册

SQL Server 选择子集中的顶部?

mysql - 在 Bluemix 应用程序上使用 Bluemix 的 SQL 数据库服务与 ClearDB MySQL 的优势