Используйте WMI для создания каталога приложений IIS с C # - PullRequest
4 голосов
/ 22 января 2010

У нас есть веб-приложение, которое установлено в системах Windows 2003 и Windows 2008. В прошлом наш установочный код использовал ADSI для создания пары каталогов приложений в IIS, но для этого необходимо установить компоненты управления IIS 6 в Windows 2008. Я пытался использовать WMI для создания каталогов приложений, чтобы мы могли обе операционные системы.

Я пробовал этот код

   public static void AddVirtualFolder(string serverName, string websiteId, string name, string path)
    {
        ManagementScope scope = new ManagementScope(string.Format(@"\\{0}\root\MicrosoftIISV2", serverName));
        scope.Connect();

        string siteName = string.Format("W3SVC/{0}/Root/{1}", websiteId, name);

        ManagementClass mc = new ManagementClass(scope, new ManagementPath("IIsWebVirtualDirSetting"), null);
        ManagementObject oWebVirtDir = mc.CreateInstance();

        oWebVirtDir.Properties["Name"].Value = siteName;
        oWebVirtDir.Properties["Path"].Value = path;
        oWebVirtDir.Properties["AuthFlags"].Value = 5; // Integrated Windows Auth.
        oWebVirtDir.Properties["EnableDefaultDoc"].Value = true;
        // date, time, size, extension, longdate ;
        oWebVirtDir.Properties["DirBrowseFlags"].Value = 0x4000003E;
        oWebVirtDir.Properties["AccessFlags"].Value = 513; // read script 
        oWebVirtDir.Put();

        ManagementObject mo = new ManagementObject(scope, new System.Management.ManagementPath("IIsWebVirtualDir='" + siteName + "'"), null);
        ManagementBaseObject inputParameters = mo.GetMethodParameters("AppCreate2");
        inputParameters["AppMode"] = 2;
        mo.InvokeMethod("AppCreate2", inputParameters, null);
        mo = new ManagementObject(scope, new System.Management.ManagementPath("IIsWebVirtualDirSetting='" + siteName + "'"), null);
        mo.Properties["AppFriendlyName"].Value = name;
        mo.Put();
    }
}

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

1 Ответ

3 голосов
/ 25 января 2010

Используя приведенный выше код, вам все равно понадобятся биты совместимости с IIS6 в Windows 2008 / IIS7. Причина этого заключается в том, что вызовы для установки свойств, таких как DirBrowseFlags, AccessFlags и т. Д., Являются свойствами метабазы ​​IIS 6, которые не поддерживаются в IIS7 без компонентов управления IIS6.

Для IIS7 я бы порекомендовал программировать непосредственно для пространства имен Microsoft.Web.Administration, но если вам действительно нужно использовать WMI, см. Эту статью:

Управление сайтами с помощью поставщика WMI IIS 7.0 (IIS.NET)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...