【问题标题】:How do I change the Default Document order programmatically in IIS using C#?如何使用 C# 在 IIS 中以编程方式更改默认文档顺序?
【发布时间】:2010-03-10 23:07:52
【问题描述】:

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

示例:

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

如何通过我的 C# 代码做到这一点?

提前感谢您的任何回复

【问题讨论】:

    标签: asp.net iis


    【解决方案1】:

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

    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。

    【讨论】:

    • 我现在在本地测试时如何知道我在 IIS 中的站点 ID?网站发布后我怎么知道?非常感谢您的帮助
    • Ohhhhhh !!!!!Opps....我有 IIS 5,我该怎么做呢?为您的努力+1
    • 非常感谢Kev先生,您的回答很有帮助,我现在可以更改文档顺序,但我有一个小问题,当我从任何目录运行应用程序时,它会正确更改,但是当我运行来自 IIS 的应用程序并尝试更改它报告错误说:访问被拒绝。 (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))所以你能帮我解决这个问题吗?提前致谢
    • @Ahmy - 最可能的错误原因是您需要管理员权限才能修改 IIS 配置。该网站的匿名帐户不会有这些。
    • 我已经给了你的接受分数,所以我对这个主观问题的分数在哪里:D
    【解决方案2】:

    一种可能性是有一个 DEFAULT 或 HOME 页面,它决定(基于请求)用户是否应该被发送到 Home1 或 Home2。

    【讨论】:

    • 不,我不想根据请求重定向,我需要来自后端的管理员来确定默认页面,所以根据他的决定,我需要通过交换 Home1 来设置默认页面。如果 Home2.aspx 是默认值,则 aspx 在 Home.aspx2 之前,反之亦然。那么我该怎么做呢?这可能吗?
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 2023-03-28
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多