在.NET的安全性中,拥有强名称的程序集会得到CLR的更多保护,默认情况下,只有受到完全信任的程序集可以访问另外一个拥有强名称的程序集,如果您希望让受到部分信任的代码访问一个拥有强有力名称的程序件,必须使用AllowPartiallyTrustedCallers属性(APTCA)对其进行声明,申明方法就是在AssemblyInfo.cs文件中添加以下申明:
[assembly : AllowPartiallyTrustedCallers()]
注:AllowPartiallyTrustedCallers()包含在System.Security名称空间中,所以首先需要在AssemblyInfo.cs添加对该名称空间的引用
我遇到的实际问题在博客园论坛中和大家讨论过,以上思路来自于几位网友,按照以上思路修改我的SPS对象模型扩展类库,这样我的Webpart在没有Full信任级别的情况下也可以访问拥有强名称的类库了
尽管这个方法能够解决我目前遇到的问题,但似乎还不是一个很好的做法,还看到一种做法是在拥有强名称程序集运行的服务器上配置.net framework 配置中赋权。还有些人在Webpage使用WinForm控件时使用的方法,和我前面提到的方法类似