Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 4.0 沙盒时出错:“违反了继承安全规则”_.net 4.0_Cas - Fatal编程技术网

.net 4.0 沙盒时出错:“违反了继承安全规则”

.net 4.0 沙盒时出错:“违反了继承安全规则”,.net-4.0,cas,.net 4.0,Cas,我正在创建一个将在沙盒环境中运行代码的应用程序。此环境应仅允许不受信任的代码处理其明确给定的资源并返回定义的数据类型。我使用本文中的主体来设置沙箱: 我还有一些代码需要在沙盒环境中运行。不幸的是,当我尝试将类型设置为在沙箱中运行时,我遇到以下错误: 类型“MyTypeRunningInAsAndBox”违反了继承安全规则。派生类型必须与基类型的安全可访问性相匹配,或者不易访问 我不确定为什么会出现这个错误,因为基类型和派生类型都是由我创建的,并且两者都不应该比另一个更安全 我的应用程序结构可帮助

我正在创建一个将在沙盒环境中运行代码的应用程序。此环境应仅允许不受信任的代码处理其明确给定的资源并返回定义的数据类型。我使用本文中的主体来设置沙箱:

我还有一些代码需要在沙盒环境中运行。不幸的是,当我尝试将类型设置为在沙箱中运行时,我遇到以下错误:

类型“MyTypeRunningInAsAndBox”违反了继承安全规则。派生类型必须与基类型的安全可访问性相匹配,或者不易访问

我不确定为什么会出现这个错误,因为基类型和派生类型都是由我创建的,并且两者都不应该比另一个更安全

我的应用程序结构可帮助您了解:

TypeLoader class
   \
    Trusted Sandbox Manager (i.e. sets up a the new sandbox)
     \              (the error is happening in this class while creating the 
      |             new app domain) 
      |
      |Untrusted Sandbox Manager (i.e. runs the untrusted code)
如果您将我的解决方案与上面的Microsoft文章进行比较,我的代码在以下行中失败:

ObjectHandle handle = Activator.CreateInstanceFrom(
newDomain, typeof(Sandboxer).Assembly.ManifestModule.FullyQualifiedName,
       typeof(Sandboxer).FullName );

有没有关于如何解决这个问题的想法?

我终于找到了答案。我需要更好地理解受信任的程序集和强名称是如何工作的。问题是,我的不受信任类型的基类型位于一个程序集中,该程序集使用与我之前设置的受信任类型相同的强名称密钥进行签名。当我将基类型移动到具有不同强名称键的新程序集时,它开始工作得很好。现在看起来很明显,无法想象为什么我以前没有看到它

感谢所有考虑过这一点的人