使用 C# 的 IIS 6 中虚拟目录的应用程序名称为空

Posted

技术标签:

【中文标题】使用 C# 的 IIS 6 中虚拟目录的应用程序名称为空【英文标题】:Application Name remain empty for virtual directory in IIS 6 using C# 【发布时间】:2010-12-16 06:36:29 【问题描述】:

我正在使用 C# 在 IIS 6 中创建虚拟目录。

我能够创建虚拟目录,但“应用程序名称”字段仍为空。

这是我正在使用的代码

DirectoryEntry iisRoot = 新 DirectoryEntry("IIS://" + Environment.MachineName + "/W3SVC");

字符串 webName = "1";

string virdir = "TestApp1";

字符串安装路径 = @"C:\MyWeb\Application\";

        try
        
            string iisPath = string.Format("IIS://0/W3SVC/1/Root", Environment.MachineName, webName);
            Console.WriteLine(iisPath);
            iisRoot = new DirectoryEntry(iisPath);

            DirectoryEntry vdir = iisRoot.Children.Add(virdir, iisRoot.SchemaClassName);

            vdir.Properties["Path"][0] = installpath;
            vdir.Properties["AppFriendlyName"][0] = virdir;
            vdir.Properties["EnableDefaultDoc"][0] = true;
            vdir.Properties["DefaultDoc"][0] = "Login.aspx,default.htm,default.aspx,default.asp";
            vdir.Properties["AspEnableParentPaths"][0] = true;
            vdir.CommitChanges();
            vdir.Invoke("AppCreate", true);
        
        catch (Exception e)
        
            Console.Write(e.Message + "\n" + e.StackTrace);
        

我使用了“AppFriendlyName”属性,但它仍然没有显示在虚拟目录属性中。

【问题讨论】:

你能获得一个工作应用的DirectoryEntry并检查属性吗? 我尝试访问属性并将“AppFriendlyName”设为空白(空) 【参考方案1】:

我终于得到了答案。

'AppFriendlyName' 属性必须在 vdir.CommitChanges() 之后设置;

所以代码应该是

DirectoryEntry iisRoot = new DirectoryEntry("IIS://" + Environment.MachineName + "/W3SVC");

string webName = "1";

string virdir = "TestApp1";

string installpath = @"C:\MyWeb\Application\";

        try
        
            string iisPath = string.Format("IIS://0/W3SVC/1/Root", Environment.MachineName, webName);
            Console.WriteLine(iisPath);
            iisRoot = new DirectoryEntry(iisPath);

            DirectoryEntry vdir = iisRoot.Children.Add(virdir, iisRoot.SchemaClassName);

            vdir.Properties["Path"][0] = installpath;
            vdir.Properties["EnableDefaultDoc"][0] = true;
            vdir.Properties["DefaultDoc"][0] = "Login.aspx,default.htm,default.aspx,default.asp";
            vdir.Properties["AspEnableParentPaths"][0] = true;
            vdir.CommitChanges();
            vdir.Invoke("AppCreate", true);
            vdir.Properties["AppFriendlyName"][0] = virdir;
            vdir.CommitChanges();
        
        catch (Exception e)
        
            Console.Write(e.Message + "\n" + e.StackTrace);
        

【讨论】:

【参考方案2】:

AppFriendlyName 是要根据IIS 6 documentation 设置的属性。也许,你可以试试vdir.Properties["AppFriendlyName"].Value = "Some Name";

【讨论】:

我尝试了同样的方法,但没有成功。无论如何,终于做了一些测试和调整,我得到了答案。 @Sunil,你为什么不和我们分享同样的东西 - 有时可能会帮助别人! 是的,我已经发布了答案。但我不知道为什么会这样

以上是关于使用 C# 的 IIS 6 中虚拟目录的应用程序名称为空的主要内容,如果未能解决你的问题,请参考以下文章

当从文件导入虚拟目录时,IIS 6 强制 AppRoot/Starting Point 为大写

在 IIS 6.0 中创建虚拟目录时的正确文件夹位置?

IIS 中 ASP.NET Core 应用程序内的虚拟目录

从 IIS 中嵌套应用程序的虚拟目录根目录中删除尾部斜杠

使用 WiX 创建 IIS 虚拟目录

iis express添加虚拟目录