14

假设我有以下 web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authentication mode="Windows"></authentication>
    </system.web>
</configuration>

使用 ASP.NET C#,如何检测 Authentication 标签的 Mode 值?

4

6 回答 6

28

身份验证部分的模式属性:AuthenticationSection.Mode 属性 (System.Web.Configuration)。你甚至可以修改它。

// Get the current Mode property.
AuthenticationMode currentMode = 
    authenticationSection.Mode;

// Set the Mode property to Windows.
authenticationSection.Mode = 
    AuthenticationMode.Windows;

本文介绍如何获取对 AuthenticationSection 的引用

于 2008-09-18T11:50:09.737 回答
11

导入System.Web.Configuration命名空间并执行以下操作:

var configuration = WebConfigurationManager.OpenWebConfiguration("/");
var authenticationSection = (AuthenticationSection)configuration.GetSection("system.web/authentication");
if (authenticationSection.Mode == AuthenticationMode.Forms)
{
  //do something
}
于 2011-08-14T00:07:59.380 回答
5

您也可以通过使用静态 ConfigurationManager类获取部分然后获取枚举来获取身份验证模式AuthenticationMode

AuthenticationMode authMode = ((AuthenticationSection) ConfigurationManager.GetSection("system.web/authentication")).Mode;

WebConfigurationManager 和 ConfigurationManager 的区别


如果要检索指定枚举中的常量名称,可以使用Enum.GetName(Type, Object)方法

Enum.GetName(typeof(AuthenticationMode), authMode); // e.g. "Windows"
于 2016-09-26T09:12:37.997 回答
4

尝试Context.User.Identity.AuthenticationType

去找PB的答案伙计们

于 2008-09-18T11:48:38.757 回答
0

在 ASP.Net Core 中,您可以使用:

public Startup(IHostingEnvironment env, IConfiguration config)
{
    var enabledAuthTypes = config["IIS_HTTPAUTH"].Split(';').Where(l => !String.IsNullOrWhiteSpace(l)).ToList();
}
于 2021-09-15T09:51:09.500 回答
-3

使用 xpath 查询 //configuration/system.web/authentication[mode] ?

protected void Page_Load(object sender, EventArgs e)
{
 XmlDocument config = new XmlDocument();
 config.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
 XmlNode node = config.SelectSingleNode("//configuration/system.web/authentication");
 this.Label1.Text = node.Attributes["mode"].Value;
}
于 2008-09-18T12:03:34.743 回答