我使用Microsoft强名称键约定编译了一个程序集,并将其标记为"AllowPartiallyTrusted“。
我正在两台不同的机器上针对这个程序集测试应用程序。一个是运行windows 2003服务器,另一个是在上运行。
我能够从Win 2003服务器调用程序集上的方法,但是当涉及到XP机器时,它会失败。
我试图将内部网区域设置为完全信任,但这对XP没有作用。XP与2003服务器之间的一个不同之处在于,XP是32位的,并在其上安装了框架1-4.0。2003年只安装了3.5 SP1。
我是XP机器的管理员,但不是它工作的2003年机器上的管理员。,这快把我逼疯了。
发布于 2011-02-23 07:33:13
Windows权限应该无关紧要--这是一个代码访问安全性问题。如果不了解所遇到的错误,就很难诊断出问题。AllowPartiallyTrustedCallersAttribute ( APTCA )旨在允许部分受信任的代码调用完全可信的代码,但是.NET 4.0安全模型已经改变了APTCA的工作方式。请参阅此博客文章详情请参阅,但在.NET 4.0中,APTCA程序集标记为SecurityTransparent,不能调用SecurityCritical程序集,这是.NET程序集的默认保护级别。
因此,如果您的APTCA程序集在.NET 4.0中执行任何特权操作,比如调用SecurityCritical代码或断言权限,那么它将失败。您应该考虑将其设置为SecuritySafeCritical,以便可以由SecurityTransparent代码调用它并调用SecurityCritical代码。当然,您需要确保它不会被不受信任的库所利用,就像APTCA代码一样。
https://stackoverflow.com/questions/3721642
复制相似问题