Я поддерживаю веб-приложение, которое больно обновлять. Это не больно, потому что код плохой, а потому, что есть много устройств, подключенных к этому приложению через Интернет, и получение их для обновления своих клиентов во многом напоминает перемещение бетона.Динамическое отображение различных версий приложения
У меня возникла идея, что я могу просто представить другую версию приложения для разных клиентов. Сеанс хранит информацию о клиенте. Поэтому то, что мне в конечном итоге хотелось бы сделать, это пик на этом сеансе, а затем использовать это, чтобы представить для них «правильную» версию моего приложения.
Физически приложения хранятся таким образом, как, например:
C: \ Program Files \ Company \ Program \ Version \ Web \ WebApp
Таким образом, вы можете видеть, что я мог бы иметь несколько версий, установленных на один раз. В основном, если клиент A отправляется на сайт, он получает C: \ Program Files \ Company \ Program \ 1.0.0.0 \ Web \ WebApp \ foo.aspx И если клиент B посещает сайт, они получают доступ к C: \ Program Files \ Компания \ Program \ 2.0.0.0 \ Web \ WebApp \ foo.aspx.
Первоначально я думал об использовании модуля перезаписи IIS, но я действительно не хочу перенаправлять их. Я хочу, чтобы это было без проблем. Любые идеи о том, как это можно реализовать?
обновление:
После дальнейших исследований, я думал, что это было бы умно использовать Global.asax.cs для достижения своей цели. Таким образом, в обработчик событий Application_BeginRequest, я написал следующее:
string url = Request.Url.ToString();
if (url.Contains("MyTest"))
{
Context.RewritePath("/art/test.html");
}
Кстати,/искусство/виртуальный каталог, который я привит в этот каталог через IIS. Это было бы похоже на то, как я смогу настроить его на производстве. Во всяком случае, я получаю следующую ошибку, когда я пытаюсь это сделать.
The virtual path '/art/test.html' maps to another application, which is not allowed.
Итак, как мне это сделать? Есть ли «разрешенная» стратегия для этого? Выполнение этого через Global.asax.cs было бы идеальным, поскольку я мог бы использовать HTTP-контекст, чтобы «знать», с которым клиент подключается к приложению.
Хорошо. Это не работает. Базовое приложение не сможет найти двоичные файлы для дочернего приложения. –