Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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
C# securitymanager.policyhierarchy()已过时,它的替代品是什么?_C#_.net_Mono - Fatal编程技术网

C# securitymanager.policyhierarchy()已过时,它的替代品是什么?

C# securitymanager.policyhierarchy()已过时,它的替代品是什么?,c#,.net,mono,C#,.net,Mono,SecurityManager.PolicyHierarchy()会生成一个关于过时的警告,但在用于比较接收到的策略级别和当前策略级别时,我找不到替换它的方法或如何替换它 例如 对于这种应用,现在应该使用什么其他方法?没有替代方法 正如您在MSDN中的SecurityManager的文档页面中所看到的,所有与策略相关的方法都已过时。这样做的原因是,现在从CAS中删除了策略(因为.Net4)。要阅读有关此检查的更多信息,请单击此处: 尽管如此,在本警告的描述中有一个很好的链接,为您提供更改代码所

SecurityManager.PolicyHierarchy()会生成一个关于过时的警告,但在用于比较接收到的策略级别和当前策略级别时,我找不到替换它的方法或如何替换它

例如


对于这种应用,现在应该使用什么其他方法?

没有替代方法

正如您在MSDN中的
SecurityManager
的文档页面中所看到的,所有与策略相关的方法都已过时。这样做的原因是,现在从CAS中删除了策略(因为.Net4)。要阅读有关此检查的更多信息,请单击此处:

尽管如此,在本警告的描述中有一个很好的链接,为您提供更改代码所需的必要信息,并建议可能的替代方案:

为了更好地帮助您,我们需要知道您在这里到底想要实现什么。描述您的目标,我们可能会建议替代方案或替代方案


根据您的评论,您试图做的似乎是对用户插入的代码(如您所说)进行沙箱处理并限制其访问。这不是CAS应该用于的用途。事实上,关于这种用法,有一个明确的警告:

.NET Framework中的代码访问安全性不应用作 基于代码起源的安全边界强制机制 或其他身份方面

您的代码可能应该进行重构,以便使用该方法提供的
证据
(强名称或url等)检索代码段所需的权限,然后使用返回的权限使用该方法将程序集加载到新的沙盒AppDomain中。您还可以在创建新域之前更改这些权限,以便对代码的执行有更多的控制。以下文章可以帮助您重构应用程序:


换句话说,不再有策略,但您可以在特定的策略下定义、检索和执行代码。

请回答问题,并提供包含完整运行时异常和编译时警告的策略。后者可以提供一个建议的替代API。我不能给你一个答案,我没有使用.NET的这一部分,但据我所知,可能没有直接的替换,但是这些代码示例中的一个可能满足您的需要。返回的代码用于确定是否允许在系统上执行use插入的代码。评估用户插入的代码并确定所需的最高策略,然后上面的代码确定该策略级别是否存在并允许执行。如果没有更多的策略级别,那么整个系统现在实际上可能会崩溃。@user2280032,我刚刚添加了有关您的用例的附加信息。
SecEnumerator levelEnumerator = SecurityManager.PolicyHierarchy();
while (levelEnumerator.MoveNext())
{
 PolicyLevel Seclevel = levelEnumerator.Current as PolicyLevel;
 if (Seclevel == Init.Seclevel)
 {
      return;
 }
}