1

我使用 Microsoft 强名称密钥约定编译了一个程序集,并将其标记为“AllowPartiallyTrusted”。

我正在从两台不同的机器上针对这个程序集测试应用程序。一台运行windows 2003 server,另一台运行windows XP Professional。

我能够从 Win 2003 服务器调用程序集上的方法,但是当涉及到 XP 机器时,它会失败。

我试图将内联网区域设置为完全信任,但这对 XP 不起作用。XP 和 2003 服务器之间的一个区别是 XP 是 32 位的,并且安装了框架 1 -4.0。2003 只安装了 3.5 SP1。

我是 XP 机器上的管理员,但不是它工作的 2003 机器上的管理员。 这让我发疯了。

4

1 回答 1

0

Windows 权限无关紧要 - 这是代码访问安全问题。如果不了解您遇到的错误,就很难诊断问题。AllowPartiallyTrustedCallersAttribute (APTCA) 旨在允许部分受信任的代码调用完全受信任的代码,但 .NET 4.0 安全模型改变了 APTCA 的工作方式。有关详细信息,请参阅此博客文章,但在 .NET 4.0 中 APTCA 程序集被标记SecurityTransparent,并且无法调用SecurityCritical程序集,这是 .NET 程序集的默认保护级别。

因此,如果您在 .NET 4.0 中的 APTCA 程序集正在执行任何特权操作,例如调用SecurityCritical代码或声明权限,那么它将失败。您应该考虑制作它SecuritySafeCritical,以便它可以通过SecurityTransparent代码和调用SecurityCritical代码调用。当然,您需要确保它不会被不受信任的库利用,就像 APTCA 代码一样。

于 2011-02-23T07:33:13.140 回答