Caspol:从网络共享上的程序集调用方法

时间:2010-09-15 20:44:12

标签: .net security caspol

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

我正在从两台不同的机器上测试针对该组件的应用程序。 一个是运行Windows 2003服务器,另一个机器是Windows XP Professional。

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

我试图将INTRANET ZONES设置为完全信任,但这对XP没有用。 XP和2003服务器之间的一个区别是XP是32位并且安装了框架1-4.0。 2003年只安装了3.5 SP1。

我是XP机器的管理员,但不是在它运行的2003机器上。 这让我疯了。

1 个答案:

答案 0 :(得分:0)

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

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