有没有办法在不使用APTCA的情况下覆盖自定义异常类中的GetObjectData?

时间:2015-08-17 07:17:17

标签: c# .net code-access-security

我有一个部分受信任的AppDomain Sandbox,我执行方法X,它实例化了MyException:

[Serializable]
class MyException: Exception
{
    public MyException():base("My exception") { }

    protected MyException(SerializationInfo serializationInfo, StreamingContext streamingContext)
        : base(serializationInfo, streamingContext) { }

    [SecurityCritical]
    public override void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        base.GetObjectData(info, context);
        Console.WriteLine("A line");
    }
}

包含A的程序集MyException未完全信任Sandbox。在沙箱中执行X时,会出现TypeLoadException

  

覆盖成员时违反了继承安全规则:MyException.GetObjectData。

我想,在[SecurityCritical]GetObjectData就是它所需要的,但似乎没有效果。

如果我将[assembly: AllowPartiallyTrustedCallers]添加到A,并将完全信任的A加载到Sandbox中,则此代码可以正常运行。但是,A包含许多类,我只会遇到此特定GetObjectData的问题。

如果不恢复旧的安全模式,有没有办法让MyException在没有AllowPartiallyTrustedCallers的情况下工作,而不用完全信任加载它?

0 个答案:

没有答案