Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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# 在ASP.NET中以编程方式获取旧CAS模型值_C#_Asp.net_Asp.net 4.5_Code Access Security - Fatal编程技术网

C# 在ASP.NET中以编程方式获取旧CAS模型值

C# 在ASP.NET中以编程方式获取旧CAS模型值,c#,asp.net,asp.net-4.5,code-access-security,C#,Asp.net,Asp.net 4.5,Code Access Security,我使用VS 2012和ASP.NET 4.5 我如何知道在C#(在ASP.NET 2.0-CLR 2.0和ASP.NET 4.5(CLR 4.0)中执行我的代码)中是否以编程方式启用了传统CAS模型,以及哪个级别 <system.web> <trust legacyCasModel="true" level="Full"/> </system.web> <runtime> <NetFx40_LegacySecur

我使用VS 2012和ASP.NET 4.5

我如何知道在C#(在ASP.NET 2.0-CLR 2.0和ASP.NET 4.5(CLR 4.0)中执行我的代码)中是否以编程方式启用了传统CAS模型
,以及哪个级别

<system.web>

    <trust legacyCasModel="true" level="Full"/>

  </system.web>

 <runtime>

    <NetFx40_LegacySecurityPolicy enabled="true"/>

  </runtime>

您可以通过web应用程序中的以下代码阅读它(我已经在.Net 4.7.1和VS 2017中对其进行了测试):

对于控制台应用程序,我只找到了这种方法(我相信这并不完美):

注意:我假设您以以下方式启用了CAS策略,如果您使用
NetFx40_LegacySecurityPolicy
标记对其进行了设置,则可以分别更改代码)


没有用于检索此信息的公共API,但有一些变通方法。如果你能描述一下你打算如何使用这些信息,那么建议一个合适的方法就更容易了。此外,“级别”(例如:策略级别、透明度级别等)的确切含义是什么?级别值,如
Full
Full“类型”级别实际上只有两个指定的选项:完全信任或部分信任。这就是你的意思吗?此外,您还没有描述一旦获得了这些信息,您将如何处理这些信息……诊断原因,请了解网站是否具有legacyCasModel
using System.Web.Configuration;

var trustsection = ((System.Web.Configuration.TrustSection)
                   WebConfigurationManager.GetSection("system.web/trust"));

bool isLegacyCasModel = trustsection.LegacyCasModel;
string level = trustsection.Level; 
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>    
    <legacyCasPolicy enabled="true" />
  </runtime>
</configuration>
    var xml = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).GetSection("runtime").SectionInformation.GetRawXml();
    var doc = new XmlDocument();
    doc.LoadXml(xml);

    bool isCasMode = doc.GetElementsByTagName("legacyCasPolicy")?[0]?.Attributes?["enabled"]?.Value == "true";