我编写了以下代码来测试 CAS:
[SecurityPermission(SecurityAction.Demand,Flags=SecurityPermissionFlag.Execution)]
static void Main(string[] args)
{
Console.WriteLine("hello, world!");
}
在 .NET 2.0 配置中,我使用上述程序集的强名称来创建一个代码组,并赋予该组Nothing权限集。所以组装未能按预期启动。
但我注意到,如果我删除以下属性:
[SecurityPermission(SecurityAction.Demand,Flags=SecurityPermissionFlag.Execution)]
程序仍然无法启动。那么这种所谓的带有属性的声明性安全性有什么意义呢?
我阅读了几个关于 CAS 的教程,他们使用命令式/声明式安全来使用 CAS。但从上面的示例来看,似乎没有必要。
如果我故意编写没有命令式/声明式安全性的代码并且不为我的程序集提供任何证据,那么 CAS 会盲目执行任何安全策略吗?
还是我误解了 CAS 的预期用途?
谢谢。