我有一个.net程序集,其方法无法验证。
我正在尝试将此程序集加载到沙箱应用程序域中。
如果我加载了跳过验证,但没有加载非托管,我会收到验证异常。像这样:
new SecurityPermission(SecurityPermissionFlag.Execution |
SecurityPermissionFlag.SkipVerification);
如果我使用非托管权限加载它可以正常工作,但是应用程序域将不够“沙盒”。
new SecurityPermission(SecurityPermissionFlag.Execution |
SecurityPermissionFlag.SkipVerification |
SecurityPermissionFlag.UnmanagedCode);
另外 - 我正在运行.Net 4,为了使上述工作能够工作,我必须切换到transperancy模型1级,如下所示:
[assembly:SecurityRules(SecurityRuleSet.Level1)]
所以,我的问题是:
谢谢!
答案 0 :(得分:1)
有没有办法在没有UnamangedCode的情况下运行未经验证的代码 权限。
即使有,你也会在那时放弃任何安全保障。无法验证的代码与非托管代码具有相同的功能。例如,它允许您打破类型系统。
使用SkipVerification而不是UnmanagedCode(或其他方式)是没有意义的。这两个是等价的,我认为它是框架中存在的错误。