Это не касается контроля версий для источника. Это требование бизнеса и того, как он взаимодействует с различными поставщиками, поэтому я пытаюсь разработать наилучший способ его настройки. По сути, нам нужно обслуживать другую основную версию сайта, в зависимости от того, кто ее ударил - и не отображают эту версию в URL-адресе. Вот как это работает прямо сейчас:IIS - как лучше всего обслуживать другую версию сайта для разных пользователей.
Сайт ASP.NET MVC 4 работает на IIS 7. В настоящее время он настроен на сайт по умолчанию в IIS с приложениями под ним. Каждое приложение является версией сайта. Когда исходный запрос попадает на сайт, он запускается через собственный фильтр ISAPI. Этот фильтр захватывает, по сути, переменную идентификатора пользователя из URL-адреса и использует ее для запроса базы данных SQL. Эта база данных связывает идентификатор пользователя с версией, которая должна быть подана (приложение в IIS), и добавляет ее в начало URL-адреса. Таким образом, http://site.com/1
становится http://site.com/2.1.0.0/1
, тем самым указывая на правильный каталог в IIS. Затем в пределах сайта пользовательские HtmlHelpers используются для удаления версии из строки URL, когда создаются привязные ссылки или кнопки и т. Д. Когда пользователь нажимает на одну из этих ссылок, она повторяется.
Это кажется излишне сложным. Я бы не хотел использовать пользовательские HtmlHelpers и просто молча перенаправить запросы на другой виртуальный каталог/физический путь в IIS.
Для альтернативы, мы рассмотрели:
- Использование URL Rewrite в IIS - но это требует версии, чтобы прийти в первоначальном запросе, и конечный пользователь не будет знать, что ,
- Использование пользовательского HttpHandler - но для этого требуется, чтобы веб-сайт уже ударил - запрос уже прошел в IIS. Может быть, я недостаточно знаю, чтобы заставить его работать.
- Попытка не переписывать URL-адрес, а только виртуальный каталог/физический путь с фильтром ISAPI, но, похоже, мы не можем использовать этот крючок.
- Создайте пользовательский HttpModule, который вызывает
HttpContext.RewritePath()
, но столкнулся с проблемами с маршрутами MVC и HtmlHelpers, так же, как если бы HttpModule ничего не делал.
У меня нет кода для обмена, на самом деле - это патентованный. Я ищу больше теории. Как было бы создано такое безумное устройство для управления версиями веб-сайтов?
Как вы хотели бы решить, какую версию использовать, если у меня нет учетной записи или я еще не вошел? –
@ Гарат. Я понимаю вопрос, но это для меня выходит за рамки этого вопроса. Требуется строка строки запроса, период и фильтр/сайт сбой, если его нет. Я не заинтересован в том, чтобы какие-либо ссылки на наш сайт имели эту переменную - я заинтересован в обслуживании нужной версии на основе этой переменной. –
Моя идея следующая. Используйте iis rewrite и в первоначальном запросе перенаправите пользователя на страницу, на которой будет установлен «custom header»/cookie/etc с версией. Затем каждый следующий запрос перенаправляет пользователя на правильную версию сайта. –