Programmatically enable forms authentication in IIS 7.0

前端 未结 3 985
滥情空心
滥情空心 2021-01-16 06:22

I\'m currently using System.DirectoryServices.DirectoryEntry and the \'AuthFlags\' property therein to set Anonymous access to a virtual web. To enable anonymous access I g

3条回答
  •  萌比男神i
    2021-01-16 06:52

    I notice you're using System.DirectoryServices to configure these features on IIS7 (according to your tags).

    In IIS7 you can configure both of these settings using the Microsoft.Web.Administration library instead:

    Setting the authentication type (replaces AuthFlags):

    IIS 7 Configuration: Security Authentication

    To configure Forms Authentication:

    using Microsoft.Web.Administration;
       ...
    long iisNumber = 1234;
    using(ServerManager serverManager = new ServerManager())
    {
      Site site = serverManager.Sites.Where(s => s.Id == iisNumber).Single();
    
      Configuration config = serverManager.GetWebConfiguration(site.Name);
      ConfigurationSection authenticationSection = 
                   config.GetSection("system.web/authentication");
      authenticationSection.SetAttributeValue("mode", "Forms");
    
      ConfigurationSection authorizationSection = 
                   config.GetSection("system.web/authorization");
      ConfigurationElementCollection addOrDenyCollection = 
                   authorizationSection.GetCollection();
      ConfigurationElement allowElement = addOrDenyCollection.CreateElement("allow");
      allowElement["users"] = "?";
    
      addOrDenyCollection.Add(allowElement);
      serverManager.CommitChanges();
    }
    

    The code above will create a new web.config file in the root of the website or modify an existing one.

    To use Microsoft.Web.Administration, add a reference to C:\Windows\System32\InetSrv\Microsoft.Web.Administration.dll.

提交回复
热议问题