gpt4 book ai didi

c# - 使用 ServerManager 类配置 IIS 身份验证设置

转载 作者:太空狗 更新时间:2023-10-29 20:08:14 25 4
gpt4 key购买 nike

我正在使用 ServerManager 类(来自 Microsoft.Web.Administration)在运行 IIS 7 的服务器上创建应用程序。我想配置应用程序是基于应用程序使用匿名身份验证还是 Windows 身份验证,以便我可以' 只需要求 IT 更改根站点上的设置。应用程序的内容属于第三方,因此我不能更改应用程序内的 web.config 文件。

Application 类没有公开任何有用的属性,但也许我可以使用 ServerManager 的 GetApplicationHostConfiguration 方法完成一些事情?

最佳答案

听起来您希望更改站点的 Internet 信息系统配置;如果这是正确的,这样的事情应该有效:

using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetWebConfiguration("Contoso");
ConfigurationSection authorizationSection = config.GetSection("system.webServer/security/authorization");
ConfigurationElementCollection authorizationCollection = authorizationSection.GetCollection();

ConfigurationElement addElement = authorizationCollection.CreateElement("add");
addElement["accessType"] = @"Allow";
addElement["roles"] = @"administrators";
authorizationCollection.Add(addElement);

serverManager.CommitChanges();
}

以上代码将允许您创建授权规则,允许组中的特定用户访问特定站点。在本例中,网站是 Contoso。

然后这将禁用站点的匿名身份验证;然后为站点启用基本和 Windows 身份验证:

using(ServerManager serverManager = new ServerManager()) 
{
Configuration config = serverManager.GetApplicationHostConfiguration();

ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso");
anonymousAuthenticationSection["enabled"] = false;

ConfigurationSection basicAuthenticationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso");
basicAuthenticationSection["enabled"] = true;

ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso");
windowsAuthenticationSection["enabled"] = true;

serverManager.CommitChanges();
}

或者如果您愿意,您可以简单地添加一个 IIS 管理器用户帐户;您可以将其设置为某些权限来操作和管理其他应用程序。

using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetAdministrationConfiguration();

ConfigurationSection authenticationSection = config.GetSection("system.webServer/management/authentication");
ConfigurationElementCollection credentialsCollection = authenticationSection.GetCollection("credentials");
ConfigurationElement addElement = credentialsCollection.CreateElement("add");
addElement["name"] = @"ContosoUser";
addElement["password"] = @"P@ssw0rd";
addElement["enabled"] = true;
credentialsCollection.Add(addElement);

serverManager.CommitChanges();
}

Internet 信息系统具有很大的灵 active ;它非常强大。通过那里引用的文档也非常深入。这些示例非常不适合您的特定用途,或者至少提供一定程度的理解以使其执行您想要的操作。

希望有所帮助,这些示例来自 here :

关于c# - 使用 ServerManager 类配置 IIS 身份验证设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9926683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com