代码之家  ›  专栏  ›  技术社区  ›  3Dave

IIS web部署-创建虚拟目录?

  •  7
  • 3Dave  · 技术社区  · 14 年前

    在VS2010/IIS 7.5上开发站点时,我使用Web Deploy将站点从我的计算机发布到dev站点服务器。

    该站点有大约40个虚拟目录,我想在部署期间自动在服务器上创建这些目录。有什么简单的方法可以做到这一点吗?

    我正在考虑编写一个小应用程序,可以从文件或数据库中加载列表,并根据需要创建它们。这些目录在我的开发机器上与在web服务器上有不同的物理路径,这也给工作带来了麻烦。

    2 回复  |  直到 14 年前
        1
  •  6
  •   AaronS    14 年前

    如果将MSBuild用于web部署,则可以在.net中编写CustomBuildTask,用于创建虚拟目录。

    关于如何创建和使用自定义生成任务,有很多资源,但以下是我用于使用自定义生成任务创建虚拟目录的代码:

    public void CreateVirtualDirectory()
    {
    
        DirectoryEntry oDE = new DirectoryEntry("IIS://" +
                this._strServerName + "/W3SVC/" + _webSiteID + "/Root");
    
    
        //Get Default Web Site
        DirectoryEntries oDC = oDE.Children;
    
        //Add row to schema
        DirectoryEntry oVirDir = oDC.Add(this._strVDirName,
                    oDE.SchemaClassName.ToString());
    
        //Commit changes for Schema class File
        oVirDir.CommitChanges();
    
    
        //Set virtual directory to physical path
        oVirDir.Properties["Path"].Value = this._strPhysicalPath;
    
        //Set read access
        oVirDir.Properties["AccessRead"][0] = true;
    
        //Set the default docs
        oVirDir.Properties["EnableDefaultDoc"][0] = true;
        oVirDir.Properties["DefaultDoc"][0] = "default.aspx";
    
        //set the name
        oVirDir.Properties["AppFriendlyName"][0] = this._strVDirName;
    
        //do it
        oVirDir.Invoke("AppCreate", true);
    
    
        //set the application pool
        if (!string.IsNullOrEmpty(_strApplicationPool))
        {
            object[] param = { 0, _strApplicationPool, true };
            oVirDir.Invoke("AppCreate3", param);
            oVirDir.Properties["AppIsolated"][0] = "2";
        }
    
        //Save all the changes
        oVirDir.CommitChanges();
    }
    
        2
  •  1
  •   moribvndvs    14 年前

    我没有针对WebDeploy做过任何自定义编程,但是我看到了一个关于它有一个API的引用。我似乎找不到关于它的官方文档,但也许这个blog+示例应用程序可以提供一个开始: Web Deploy API Web Application