使用 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 中虚拟目录的应用程序名称为空的主要内容,如果未能解决你的问题,请参考以下文章