appcmd создал сайт, игнорируя файл asp.net web.config с iis 7

Если я создаю сайт вручную с помощью приложения inetmgr (IIS 7) и задаю ему имя сайта и его физическое местоположение (а также меняю пул приложений на.net 4), все работает нормально и получает файл web.config.

Однако, если я настраиваю тот же сайт в командной строке, используя appcmd, он по какой-то причине игнорирует файл web.config, inetmgr показывает, что сайт работает и файлы там, но в "Редакторе конфигурации" там нет записей из файл web.config.

Командная строка приложения cmd запускается из сценария сборки, но способ сделать это ниже:

def create_web_site(site_name, site_location, site_port)
  delete_command = "#{$file["appcmd"]} delete site #{site_name}"
  result = system delete_command
  puts "Failed to delete site on IIS: #{$?}" unless result

  add_command = "#{$file["appcmd"]} add site /name:#{site_name} /bindings:http/*:#{site_port}: /physicalPath:#{site_location}"
  result = system add_command
  raise "Failed to add site on IIS: #{$?}" unless result

  set_app_pool_command = "#{$file["appcmd"]} set app #{site_name}/ /applicationPool:\"ASP.NET v4.0\""
  result = system set_app_pool_command
  raise "Failed to bind site to .net 4 app pool on IIS: #{$?}" unless result

  start_site_command = "#{$file["appcmd"]} start site #{site_name}"
  result = system start_site_command
  raise "Failed to start site on IIS: #{$?}" unless result
end

Вам не нужно знать rake/ruby, чтобы увидеть, что он запускает appcmd и удаляет сайт, если он существует, затем добавляет новый, используя пул приложений.net 4, а затем запускает сайт. Это все работает нормально, и я вижу, что 2 сайта, которые идентичны, насколько я могу судить (кроме того, что я вручную создаю через графический интерфейс, имеет другой порт для другого, чтобы остановить конфликты).

Что-то мне не хватает в appcmd, который GUI делает для вас при настройке сайтов?

1 ответ

Решение

После того, как возиться с проблемой, до косых черт между папками, которые являются неправильными для IIS. Кажется, все работает, но ничего не подхватывает, поэтому каталог моего сайта был примерно таким:

C:/some_folder/some_site

в моем сценарии я должен был поменять их местами:

C:\some_folder\some_site

Все работало нормально, однако, поскольку символ "\" обычно означает пропуск или игнорирование следующего символа, я просто сделал это как замену строки в первой строке, а не вводил ее как правильный способ для начала.

Другие вопросы по тегам