我在一些库中遇到了一些中等信任问题。我可以使用示例重现该错误,并在我的 MVC 项目中引用该错误。我正在尝试解决这个问题,但不明白我错过了什么。
我不断收到此错误:
违反继承安全规则
覆盖成员时:
'Temp.Class1.InitializeLifetimeService()'。
的安全可及性
覆盖方法必须匹配
该方法的安全可访问性
被覆盖。
我认为理解上面的安全透明度错误,并且我确保我的方法与重写方法相同。这是我的课程:
public class Class1 : MarshalByRefObject
{
[SecurityCritical]
public override object InitializeLifetimeService()
{
return null;
}
}
而且我仍然遇到与上面相同的错误。
已添加和删除这一行,但没有效果:
[assembly: AllowPartiallyTrustedCallers()]
阅读其他文章我所要做的就是向该方法添加 SecurityCritical 属性,但它似乎没有任何影响。
有什么想法,或者我缺少的东西吗?
在中等信任度的 Web 应用程序中,只有经过 GAC 处理的二进制文件才会被授予完全信任权限。如果您的二进制文件是 bin 部署的,那么它是部分信任且透明的。MSDN 有一篇很好的文章 http://msdn.microsoft.com/en-us/library/dd233102.aspx透明代码可以做什么和不能做什么。重要的,声明 [SecurityCritical] 成员是一项仅完全信任的操作。如果您的 bin 部署的库包含用 [SecurityCritical] 注释的成员,则 CLR 将忽略该注释。
如果您的库设计为 bin 部署并可在中等信任度下运行,则您无法覆盖或以其他方式访问 [SecurityCritical] 成员。考虑重新设计您的库,以免调用这些方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)