Динамическое представление разных версий приложения - PullRequest
0 голосов
/ 20 сентября 2010

Я поддерживаю веб-приложение, которое больно обновлять.Это не больно, потому что код плохой, но потому что к этому приложению подключено множество устройств через Интернет, и заставить их обновлять своих клиентов во многом похоже на перемещение бетона.

Так что у меня возникла мысль, чтоЯ мог бы просто представить другую версию приложения разным клиентам.Сеанс хранит информацию о клиенте.Итак, что я в конечном итоге хотел бы сделать, так это достичь максимума на этом сеансе, а затем использовать его для представления им «правильной» версии моего приложения.

Физически приложения хранятся таким образом:

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\ Company \ 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");
        }

Кстати, / art / - это виртуальный каталог, который я ввел в этот каталог через IIS.Это было бы похоже на то, как я настроил бы это в производстве.Во всяком случае, я получаю следующую ошибку, когда я пытаюсь это сделать.

The virtual path '/art/test.html' maps to another application, which is not allowed.

Итак, как мне это сделать тогда?Есть ли «разрешенная» стратегия для достижения этой цели?Делать это через Global.asax.cs было бы идеально, так как я мог бы использовать HTTP-контекст, чтобы «знать», какой клиент подключается к приложению.

1 Ответ

0 голосов
/ 21 сентября 2010

Ладно, я в основном разобрался.Вот как я это сделал.Я в основном создал родительское приложение, которое будет направлять к различным версиям.В этом приложении я использую Context.RewritePath, как я делал выше , за исключением того, что я добавил ~ перед URL.Теперь у меня есть проблемы с состоянием просмотра, но я думаю, что я могу понять это отсюда.(Я надеюсь).Я обновлю этот ответ позже, когда в итоге получу идеально работающее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...