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

时间:2015-11-24 22:45:40

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

我使用VS 2012和ASP.NET 4.5。

如何在C#中启用 旧版CAS模型 programmatically(在ASP.NET 2.0中执行我的代码 - CLR 2.0和ASP。 NET 4.5(CLR 4.0)?以及级别

<system.web>

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

  </system.web>

 <runtime>

    <NetFx40_LegacySecurityPolicy enabled="true"/>

  </runtime>

1 个答案:

答案 0 :(得分:2)

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

using System.Web.Configuration;

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

bool isLegacyCasModel = trustsection.LegacyCasModel;
string level = trustsection.Level; 

对于控制台应用程序,我只是以这种方式发现的(我相信这不是完美的):

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

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>    
    <legacyCasPolicy enabled="true" />
  </runtime>
</configuration>

因此,c#代码为:

    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";