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
Все работало нормально, однако, поскольку символ "\" обычно означает пропуск или игнорирование следующего символа, я просто сделал это как замену строки в первой строке, а не вводил ее как правильный способ для начала.