Установка серверных привязок IIS 6.0 программным путем - PullRequest
2 голосов
/ 24 июля 2010

Я пытаюсь настроить установщик для регистрации веб-сайта.В настоящее время у меня есть создание пула приложений и веб-сайта под Windows Server 2003. К сожалению, всякий раз, когда я пытаюсь изменить свойство ServerBindings для установки IP-адреса, оно вызывает у меня исключение.Сначала я попробовал это сделать, потому что в документации, приведенной здесь, указано http://msdn.microsoft.com/en-us/library/ms525712%28VS.90%29.aspx.. В настоящее время я использую VB.NET, но ответы на C # тоже хороши, так как мне все равно нужно переключиться на использование C #.

Это вызывает исключение ArgumentOutOfRangeException.Я проверил это, и привязки сервера имеют размер 0. Когда я пытался создать новую запись в списке, как это:

siteRootDE.Properties.Item("ServerBindings").Add("<address>")

, я получаю COMException, когда я пытаюсь это сделать.

Я посмотрел на зарегистрированные ключи свойств, и ServerBindings нигде не найти.Однако когда я создаю веб-сайт через IIS, он правильно генерирует привязки сервера, и я вижу его.

Что нужно сделать, чтобы отобразились привязки сервера?

РЕДАКТИРОВАТЬ: я переместилкод на C # и попробовал.По какой-то причине кажется, что VB.NET аварийно завершает работу, если указано выше, а C # - нет.Но этот код, похоже, ничего не делает.Это просто молча терпит неудачу.Я пытаюсь это так:

// WebPage is the folder where I created the website
DirectoryEntry siteRootDE = new DirectoryRoot("IIS://LocalHost/W3SVC/WebPage");
// www.mydomain.com is one of the IP addresses that shows up
// when I used the IIS administrative program
siteRootDE.Properties["ServerBindings"].Value = ":80:www.mydomain.com";
siteRootDE.CommitChanges();

1 Ответ

5 голосов
/ 24 июля 2010

В C # вы должны сделать это:

webSite.Invoke("Put", "ServerBindings", ":80:www.mydomain.com"); 

или

webSite.Properties["ServerBindings"].Value = ":80:www.mydomain.com";

EDIT:

Вот пример кода, который я использовал.

public static void CreateNewWebSite(string siteID, string hostname)
{
    DirectoryEntry webService = new DirectoryEntry("IIS://LOCALHOST/W3SVC");

    DirectoryEntry website = new DirectoryEntry();
    website = webService.Children.Add(siteID, "IIsWebServer");
    website.CommitChanges();

    website.Invoke("Put", "ServerBindings", ":80:" + hostname);
    // Or website.Properties["ServerBindings"].Value = ":80:" + hostname;            
    website.Properties["ServerState"].Value = 2;
    website.Properties["ServerComment"].Value = hostname;
    website.CommitChanges();

    DirectoryEntry rootDir = website.Children.Add("ROOT", "IIsWebVirtualDir");
    rootDir.CommitChanges();

    rootDir.Properties["AppIsolated"].Value = 2;
    rootDir.Properties["Path"].Value = @"C:\Inetpub\wwwroot\MyRootDir";
    rootDir.Properties["AuthFlags"].Value = 5;
    rootDir.Properties["AccessFlags"].Value = 513;
    rootDir.CommitChanges();
    website.CommitChanges();
    webService.CommitChanges();
}

Также, вот хорошая статья для справки.

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