IIS 7: запустите уникальный экземпляр сайта на имя хоста

  1. rpm -q --requires somepackagehere

  2. Каждый i?86 пакет, другой x86_64 пакет.

2
задан 26 November 2012 в 13:18
2 ответа

У вас есть несколько вариантов. Во-первых, я хочу убедиться, что правильно понимаю, когда вы говорите: «Приложение использует имя своего хоста в качестве ключа для получения конфигурации». Под «именем хоста» вы подразумеваете имя веб-сайта IIS или имя домена (обычно называемое именем хоста)? Я предполагаю, что вы имеете в виду имя веб-сайта IIS, поскольку запрашиваете уникальный сайт IIS для каждого уникального имени домена.

Переопределение URL-адреса дает большую гибкость, так что вы можете переопределить или создать переменные сервера по своему желанию, поэтому, если возможно, это будет конечно, упростить это, если вы можете использовать что-то помимо имени сайта IIS для настроек приложения. Но ... вы просили не предлагать программные / архитектурные изменения, поэтому я вернусь к конкретному ответу на ваш вопрос. Я просто подумал, что упомянул бы это, если вы еще не рассмотрели гибкость, которую предлагает URL Rewrite.

Я бы справился с тем, что вы просили, - это создать сайт под названием «Catch-all», который имеет привязка подстановочного знака для IP. На этом сайте должно быть правило перезаписи URL-адреса, чтобы гарантировать, что все запросы, независимо от URL-адреса, обращаются к странице createdite.aspx. Страница createdite.aspx должна иметь доменное имя (Request.ServerVariables ("HTTP_HOST")), создавать сайт и указывать на общую папку. Используйте Microsoft.Web.Administration, чтобы создать сайт, и убедитесь, что пул приложений для этого сайта имеет удостоверение администратора в поле IIS. Вот как создать сайт ( http://blogs.msdn.com/b/carlosag/archive/2006/04/17/microsoftwebadministration.aspx ).

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

Наконец, страница createdite.aspx должна выполнить response.redirect обратно на исходный URL-адрес, включая передачу по полному пути и строка запроса. То, как конечный пользователь не осознает, что только что произошло, за исключением короткой паузы и перенаправления, если он случайно смотрит в скрипач.

сайт для приема всей почты домена используется только при первом использовании конкретного доменного имени.

Наконец, страница createdite.aspx должна выполнить response.redirect обратно на исходный URL, включая передачу полного пути и строки запроса. То, как конечный пользователь не осознает, что только что произошло, за исключением короткой паузы и перенаправления, если он случайно смотрит в скрипач.

сайт для приема всей почты домена используется только при первом использовании конкретного доменного имени.

Наконец, страница createdite.aspx должна выполнить response.redirect обратно на исходный URL, включая передачу полного пути и строки запроса. То, как конечный пользователь не осознает, что только что произошло, за исключением короткой паузы и перенаправления, если он случайно смотрит в скрипач.

1
ответ дан 3 December 2019 в 11:51

Исходя из моего понимания того, как работает IIS, я бы сказал, что это невозможно из коробки.

Служба активации процессов Windows WAS находится между http.sys в ядре и различными рабочие процессы, которые запускают пулы приложений / сайты.

На основе конфигурации в существующих файлах (ApplicationHost.Config / web.config) он решает, куда направить входящий запрос. Он может запустить существующий пул приложений, если он еще не запущен, но он не может создать новый сайт на основе веб-запроса.

Вы можете подключить свои собственные расширения к конвейеру обработки запросов, но я думаю, только как только запрос поразил ваш рабочий процесс, не раньше.

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

Я бы начал использовать сценарий для создания новых экземпляров ваших веб-сайтов, передавая переменные. Вы можете легко создать сотни сайтов для всех ваших различных конфигураций.

Если он должен быть более динамичным, вы можете добавить в свое веб-приложение функцию, которая обнаруживает, что нужен новый сайт, и будет отображаться сообщение «вернуться в 30 секунд и отправьте сообщение в службу Windows для создания нового сайта. Новый сайт должен быть запущен через несколько секунд, а затем может отвечать на новые запросы.

1
ответ дан 3 December 2019 в 11:51

Теги

Похожие вопросы