SIGN UP MEMBER LOGIN:    
ARTICLE

Working with IIS Metabase with DirectoryServices

Posted by Kapil Deo Malhotra Articles | Internet & Web July 18, 2007
This article shows how to know the settings done on the Virtual Directory are correct or not programmatically.
Reader Level:

Introduction:

 

While working with the IIS we all like to know the settings done on the Virtual Directory are correct or not. So we are going to see how to do that programmatically.

 

To check some properties of the IIS (Virtual Directory) of Web based application after  install, one can create custom application for that.

 

There are list of IIS Properties which we can get after post installation. The list of properties exposed by the IIS API or Web Settings Property is mentioned below 

  • AuthFlags
  • Path
  • AppFriendlyName
  • EnableDirBrowsing
  • AccessRead
  • AccessExecute
  • AccessWrite
  • AccessScript
  • AuthNTLM
  • EnableDefaultDoc
  • DefaultDoc
  • AspEnableParentPaths

The above settings are configured in the Metabase of the IIS.

 

IIS Metabase:

 

IIS Metabase is a structure where IIS configuration settings are stored. The metabase configuration and schema for IIS 4.0 and IIS 5.0 were stored in a binary file, but from IIS6.0 the configuration and setting is stored in single binary file (MetaBase.bin), with plain text, Extensible Markup Language (XML) formatted files named MetaBase.xml and MBSchema.xml.  You can navigate through the IIS Metabase using MetaEdit or Metabase Explorer. 

 

The Metabase is based on a hierarchical design with inheritance. Each object in the metabase has a KeyType. The KeyType property specifies the type of metabase key.

 

Implementation:

 

.Net provides the namespace which is used to get the properties of the IIS Virtual Directory. .Net have the "System.DirectoryServices" namespace which exposes the DirectoryEntry Class.

 

Code:

 

WebSettings.cs:

  

public class WebSettings

{

     //Authentication Bitmask Values

     //Constant Value Description

     public const int MD_AUTH_ANONYMOUS = 0x00000001;

     //Anonymous authentication available.

     public const int MD_AUTH_BASIC = 0x00000002;

     //Basic authentication available.

     public const int MD_AUTH_NT = 0x00000004;

     //Windows authentication schemes available.

     string Auth_Type;

     public string calc(int AuthValue)

     {

          if (AuthValue == MD_AUTH_ANONYMOUS)

          {

               Auth_Type = "ANONYMOUS ACCESS ENABLED";

          }

          if (AuthValue == MD_AUTH_BASIC)

          {

               Auth_Type = "BASIC ACCESS ENABLED";

          }

          if (AuthValue == MD_AUTH_NT)

          {

               Auth_Type = "INTEGRATED WINDOWS ACCESS ENABLED";

          }

          if (AuthValue == (MD_AUTH_ANONYMOUS + MD_AUTH_NT))

          {

               Auth_Type = "INTEGRATED WINDOWS + ANONYMOUS ACCESS ENABLED";

          }

          if (AuthValue == (MD_AUTH_ANONYMOUS + MD_AUTH_BASIC))

         {

              Auth_Type="BASIC + ANONYMOUS";

         }

         if (AuthValue == (MD_AUTH_ANONYMOUS + MD_AUTH_NT))

         {

              Auth_Type = "INTEGRATED + ANONYMOUS";

         }

         if (AuthValue == (MD_AUTH_BASIC + MD_AUTH_NT))

         {

             Auth_Type = "BASIC + INTEGRATED";

         }

         if (AuthValue == (MD_AUTH_ANONYMOUS + MD_AUTH_BASIC + MD_AUTH_NT))

         {

             Auth_Type = "ANONYMOUS + BASIC + INTEGRATED";

         }

          return Auth_Type;

     }

 

Main.cs

 

string serverName;

string vDir;

serverName = System.Environment.MachineName;

vDir = "DirectoryName";

vdir = new DirectoryEntry("IIS://" + serverName + "/W3SVC/1/ROOT/" + vDir);

wbs = new WebSettings();

string[] sComp = new string[12];

sComp[0] = "AuthFlags";

sComp[1] = "Path";

sComp[2] = "AppFriendlyName";

sComp[3] ="EnableDirBrowsing";

sComp[4] ="AccessRead";

sComp[5] ="AccessExecute";

sComp[6] ="AccessWrite";

sComp[7] ="AccessScript";

sComp[8] ="AuthNTLM";

sComp[9] ="EnableDefaultDoc";

sComp[10] ="DefaultDoc";

sComp[11] ="AspEnableParentPaths";

ListViewItem[] listViewItem = new ListViewItem[12];

lstIISProperty.Items.Clear();

for (int i = 0; i < sComp.Length; i++)

{

    //lstComponents.MultiColumn = 2;

    lstIISProperty.Sorting = SortOrder.Ascending;

    if (sComp[i] != null)

    {

    listViewItem[i] = new ListViewItem(new string[]{ sComp[i], IISPropertyValue(sCompi]), fnExpected_Value(sComp[i])}, -1);

    lstIISProperty.Items.Add(listViewItem[i]);

    }

}

Login to add your contents and source code to this article
share this article :
post comment
 
Team Foundation Server Hosting
Become a Sponsor
PREMIUM SPONSORS
  • ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Become a Sponsor