IIS API - создавать виртуальные каталоги? - PullRequest
6 голосов
/ 05 ноября 2008

Просто ищу соответствующую документацию. Пример не обязателен, но был бы оценен.

У нас есть ситуация, когда нам приходится создавать сотни виртуальных каталогов вручную, и кажется, что автоматизация - это хороший способ сделать процесс более эффективным на данный момент.

Возможно, в следующем году мы сможем переработать серверную среду, чтобы сделать что-то более вменяемое, например, перезапись URL (к сожалению, это не представляется возможным в текущем цикле веб-приложения). Разве это не здорово наследовать дерьмовый код?

~ Уильям Райли-Лэнд

Ответы [ 4 ]

6 голосов
/ 05 ноября 2008

Это проще сделать с vbscript тоже ..

' This code creates a virtual directory in the default Web Site
' ---------------------------------------------------------------
' From the book "Windows Server Cookbook" by Robbie Allen
' ISBN: 0-596-00633-0
' ---------------------------------------------------------------

' ------ SCRIPT CONFIGURATION ------
strComputer = "rallen-w2k3"
strVdirName = "<VdirName>"  'e.g. employees
strVdirPath = "<Path>"      'e.g. D:\resumes
' ------ END CONFIGURATION ---------
set objIIS = GetObject("IIS://" & strComputer & "/W3SVC/1")
set objWebSite = objIIS.GetObject("IISWebVirtualDir","Root")
set objVdir = objWebSite.Create("IISWebVirtualDir",strVdirName)
objVdir.AccessRead = True
objVdir.Path = strVdirPath
objVdir.SetInfo
WScript.Echo "Successfully created virtual directory: " & objVdir.Name
4 голосов
/ 05 ноября 2008

Очевидно, вы также можете сделать это с помощью скриптов PowerShell:

$objIIS = new-object System.DirectoryServices.DirectoryEntry("IIS://localhost/W3SVC/1/Root")
$children = $objIIS.psbase.children
$vDir = $children.add("NewFolder",$objIIS.psbase.SchemaClassName)
$vDir.psbase.CommitChanges()
$vDir.Path = "C:\Documents and Settings\blah\Desktop\new"
$vDir.defaultdoc = "Default.htm"
$vDir.psbase.CommitChanges()

Вот документация: MSDN - Использование программного администрирования IIS

2 голосов
/ 05 ноября 2008

НЕ ИСПЫТАНО (из старой базы кода и написано моим бывшим подрядчиком)

using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
using System.IO;

namespace Common.DirectoryServices
{
    public class IISManager
    {

        private string _webSiteID;

        public string WebSiteID
        {
            get { return _webSiteID; }
            set { _webSiteID = value; }
        }

        private string _strServerName;
        public string ServerName
        {
            get
            {
                return _strServerName;
            }
            set
            {
                _strServerName = value;
            }
        }

        private string _strVDirName;
        public string VDirName
        {
            get
            {
                return _strVDirName;
            }
            set
            {
                _strVDirName = value;
            }
        }

        private string _strPhysicalPath;
        public string PhysicalPath
        {
            get
            {
                return _strPhysicalPath;
            }
            set
            {
                _strPhysicalPath = value;
            }
        }

        private VDirectoryType _directoryType;
        public VDirectoryType DirectoryType
        {
            get
            {
                return _directoryType;
            }
            set
            {
                _directoryType = value;
            }
        }

        public enum VDirectoryType
        {
            FTP_DIR, WEB_IIS_DIR
        };

        public string CreateVDir()
        {
            System.DirectoryServices.DirectoryEntry oDE;
            System.DirectoryServices.DirectoryEntries oDC;
            System.DirectoryServices.DirectoryEntry oVirDir;
            //try
           // {
                //check whether to create FTP or Web IIS Virtual Directory
                if (this.DirectoryType == VDirectoryType.WEB_IIS_DIR)
                {
                    oDE = new DirectoryEntry("IIS://" +
                          this._strServerName + "/W3SVC/" + _webSiteID + "/Root");
                }
                else
                {
                    oDE = new DirectoryEntry("IIS://" +
                          this._strServerName + "/MSFTPSVC/1/Root");
                }

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

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

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

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

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

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

                //Create Application for IIS Application (as for ASP.NET)
                if (this.DirectoryType == VDirectoryType.WEB_IIS_DIR)
                {
                    oVirDir.Invoke("AppCreate", true);
                    oVirDir.Properties["AppFriendlyName"][0] = this._strVDirName;
                }

                //Save all the changes
                oVirDir.CommitChanges();

                return null;

           // }
            //catch (Exception exc)
            //{
             //   return exc.Message.ToString();
            //}
        }
    }
}
1 голос
/ 05 ноября 2008

Средство установки WIX создает способ управления этим - вы определяете их как часть инструкций по сборке установки. Требуется некоторая работа для настройки всего проекта, но после этого обслуживание должно быть легким ... Вот выдержка из Учебника по созданию записей виртуального каталога ...

6.3 Веб-каталог

В наборе инструментов WiX есть дополнительные библиотеки, которые позволяют установщику выполнять дополнительные задачи, такие как создание веб-каталога в IIS. Чтобы использовать эти расширения, все, что вам нужно сделать, это связать с соответствующей библиотекой WiX. Компоновщик автоматически включит необходимые вспомогательные DLL в установочный пакет.

Сначала мы должны создать веб-сайт с принадлежащими ему файлами:









Следующим шагом является создание виртуального каталога:







Наконец, создайте запись для ссылки на веб-сайт:




...