Вы можете сказать, что ваша ошибка из исключения.Посмотрите на первую строку в трассировке стека исключений:
System.Runtime.InteropServices.COMException is nothandled Message = "Имя файла: \ r \ nError: Нераспознанный элемент 'ftpServer' \ r \ n \ r\ n "Source =" "ErrorCode = -2147023483
Прежде всего, мы видим" Нераспознанный элемент 'ftpserver' "- который должен многое рассказать нам о том, что произошло, когда мы смотрим на ваш код.Но в дополнение к этому нам предоставляется код ошибки, который точно сообщает нам, почему возникло исключение COMException.Если мы расшифруем код ошибки в целое число без знака (шестнадцатеричное), мы получим:
0x80070585
Это соответствует коду ошибки:
- 8: Ошибка
- 7: Win32
- 585: (десятичный 1413): неверный индекс (ERROR_INVALID_INDEX)
Для получения дополнительной информации о кодах ошибок см. HRESULT и Win32 коды ошибок .
Итак, мы сгенерировали исключение COMExec, потому что мы использовали недопустимый индекс.И мы получаем «нераспознанный элемент« ftpServer »» в сообщении об исключении.Просматривая свой код, вы создаете новый элемент ConfigurationElement siteElement, сообщая sitesCollection добавить новый элемент с именем «site»:
Microsoft.Web.Administration.Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
ConfigurationElement siteElement = sitesCollection.CreateElement("site");
Затем вы создаете имя для сайта и создаете привязки в привязках сайта.collection:
siteElement["name"] = @"eMentorftp";
ConfigurationElementCollection bindingsCollection = siteElement.GetCollection("bindings");
ConfigurationElement bindingElement = bindingsCollection.CreateElement("binding");
bindingElement["protocol"] = @"ftp";
bindingElement["bindingInformation"] = @"*:21:";
bindingsCollection.Add(bindingElement);
К сожалению, вы затем пытаетесь получить дочерний элемент сайта, используя имя «ftpServer»:
ConfigurationElement ftpServerElement = siteElement.GetChildElement("ftpServer");
Но элемент ConfigurationElement siteElement, который был только что создан- не имеет ребенка с именем ftpServer!Таким образом, мы получаем неверный индекс и генерируем исключение.Вы хотели создать дочерний элемент в этой строке кода?
Кроме того, я представляю, что это исключение COMExec из-за взаимодействия интерфейса .NET с соответствующими COM-объектами IIS7.Не быть экспертом (вообще) в пространстве имен Microsoft.Web, это всего лишь предположение.