代码访问安全性
代码访问安全性基于计算机管理员设置的安全策略控制可执行代码对资源和操作的访问。但是,由于代码访问安全性不审核跨越远程连接的堆栈,远程处理应用程序的开发人员应清楚地知道,远程处理基础结构需要完全信任才能在客户端或服务器上执行。警告   您决不应该尝试为 AppDomain 对象创建可远程处理的包装。如果这样做,就可能能够在远程发布对该 AppDomain 的引用,这会在远程公开 AppDomain.CreateInstance 方法(或其他方法),并因而破坏该 AppDomain 的任何代码访问安全性。正在连接到远程 AppDomain 的未经授权的客户端可能能够访问 AppDomain 本身可以访问的任何资源。实际上,您不应该对以下类型执行此操作:扩展 MarshalByRefObject 的任何类型;实现可以由未经授权的客户端用来以任何方式绕过安全系统的方法的任何类型。
从更为一般的意义上来讲,几种系统类型扩展 MarshalByRefObject,但在运行时执行安全检查以防止应用程序域之外的任何对象在远程实际调用该类型的对象。AppDomain 和 System.Windows.Forms.Form 就是这种情况的两个示例。这样来理解会容易一些:您可以扩展 MarshalByRefObject 并在远程获取引用,但这对于这些特殊类型则不适用。它可能会尝试将进程内引用包装在另一个可远程处理的类型中,但这样做会在无意中绕过代码访问安全机制,因此决不应该这样做。