gpt4 book ai didi

c# - 在特定网站中使用 C# 创建 Web IIS 虚拟目录

转载 作者:太空宇宙 更新时间:2023-11-03 20:29:34 26 4
gpt4 key购买 nike

  public void CreateVirtualDirectory(string nameDirectory, string realPath)
{
System.DirectoryServices.DirectoryEntry oDE;
System.DirectoryServices.DirectoryEntries oDC;
System.DirectoryServices.DirectoryEntry oVirDir;
try
{

oDE = new DirectoryEntry("IIS://" + this._serverName + "/W3SVC/1/Root");

//Get Default Web Site
oDC = oDE.Children;

//Add row
oVirDir = oDC.Add(nameDirectory, oDE.SchemaClassName.ToString());

//Commit changes for Schema class File
oVirDir.CommitChanges();

//Create physical path if it does not exists
if (!Directory.Exists(realPath))
{
Directory.CreateDirectory(realPath);
}

//Set virtual directory to physical path
oVirDir.Properties["Path"].Value = realPath;

//Set read access
oVirDir.Properties["AccessRead"][0] = true;

//Create Application for IIS Application (as for ASP.NET)

oVirDir.Invoke("AppCreate", true);
oVirDir.Properties["AppFriendlyName"][0] = nameDirectory;


//Save all the changes
oVirDir.CommitChanges();
}
catch (Exception ex)
{
throw ex;
}
}

上述函数工作正常 _serverName = "localhost" 但这总是在 IIS 的 默认网站 中创建虚拟目录。虽然我在 localhost:8080 上创建了另一个名为 MySite 的示例站点。所以当我输入 _serverName = "localhost:8080" 时,它给了我错误。

最佳答案

这一行:

oDE = new DirectoryEntry("IIS://" + this._serverName + "/W3SVC/1/Root");

始终采用默认网站。 “1”是网站的 ID。将“1”替换为您要在其中创建虚拟目录的站点的 ID。您可以在此处的 IIS 中找到站点 ID:

enter image description here

如果需要,您还可以使用目录服务以编程方式枚举所有网站,以帮助您找到正确的 ID:

DirectoryEntry w3svc = new DirectoryEntry("IIS://" + this._serverName + "/w3svc");

foreach(DirectoryEntry de in w3svc.Children)
{
if(de.SchemaClassName == "IIsWebServer")
{
var id = de.Name; //Name is the ID
var displayName = de.Properties["ServerComment"].Value.ToString();
}
}

关于c# - 在特定网站中使用 C# 创建 Web IIS 虚拟目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com