如何使用C#在IIS中以编程方式更改默认文档顺序?

时间:2010-01-18 16:29:54

标签: asp.net iis

我有一个ASP.NET网站应用程序,我的网站有一个主页。我需要能够以编程方式(C#)更改我网站的默认文档,以便我可以使另一个网页优先于已存在的网页。然后,我想恢复到之前的默认文档顺序。

示例:

我有两个主页 - Home1.aspxHome2.aspx。在IIS默认文档设置中,我添加了两个页面,并使Home1.aspx成为第一个默认文档,然后是Home2.aspx。在某些情况下,我需要能够更改两个默认文档的顺序,以便Home2.aspx是第一个默认文档,然后是Home1.aspx第二个默认文档。

我怎么能用我的C#代码呢?

提前感谢您的回复

3 个答案:

答案 0 :(得分:3)

这个简单的示例演示了如何更改默认文档顺序:

using System.DirectoryServices;

class Program
{
    static void Main(string[] args)
    {
        // You need to change this value to match your site ID in IIS.
        int iisNumber = 668;  

        /* If your site is in its own IIS application/vdir under the site root
           and you've touched the default document settings or only want the 
           default document altered for that application/vdir folder then 
           specify as:

           IIS://Localhost/W3SVC/{0}/root/MyApplication
        */
        string metabasePath = 
               String.Format("IIS://Localhost/W3SVC/{0}/root", iisNumber);
        //Change one way
        using (DirectoryEntry de = new DirectoryEntry(metabasePath))
        {
            de.Properties["DefaultDoc"].Value = "Home1.aspx,Home2.aspx";
            de.CommitChanges();
        }

        // Change back
        using (DirectoryEntry de = new DirectoryEntry(metabasePath))
        {
            de.Properties["DefaultDoc"].Value = "Home2.aspx,Home1.aspx";
            de.CommitChanges();
        }
    }
}

这适用于运行IIS 6管理兼容性位的IIS 6和IIS 7.

答案 1 :(得分:1)

一种可能性是拥有DEFAULT或HOME页面,该页面确定(根据请求)是否应将用户发送到Home1或Home2。

答案 2 :(得分:1)

This Article向您展示如何修改c#中的IIS元数据库以执行您想要的操作。

您必须枚举所有属性才能找到所需的属性。 This article会帮助您。