Классическое однократное копирование данных ASP в ASP.Net

У нас есть обширный классический сайт ASP, и мы планируем обновить его до ASP .Net (скорее всего, до последней версии). Очевидно, что одновременное обновление всех страниц было бы задачей левиафана, поэтому сначала мы только хотим писать новые страницы (и переписывать страницы) в ASP.Net.

Для этого есть два препятствия:

  1. Я понятия не имею, как получить доступ к классическим данным сеанса ASP в ASP.Net. Это должно быть настроено только один раз, так как оно никогда не изменяется ни на одной странице, кроме страницы входа. Я бы предпочел внести минимальные изменения в классическую страницу входа ASP, но это всего лишь небольшое предпочтение.

  2. Сеансы ASP и ASP.Net должны быть отключены одновременно, чтобы сохранить разницу версий.

Может ли кто-нибудь предложить какую-либо помощь, пожалуйста?

Заранее спасибо.

3 ответа

Решение

Мы столкнулись с той же задачей (не весело). Поскольку сеанс Asp.Net и сеанс Asp нельзя разделить, мы использовали комбинацию методов, каждый из которых соответствует ситуации.

  • В некоторых случаях мы использовали куки вместо сессии.
  • В других случаях мы настраивали автоматическое размещение форм таким образом, чтобы, если информация о сеансе пользователя была задана на классической странице ASP, после установки информации о сеансе мы перенаправлялись на страницу Asp.Net, которая считывала параметры строки запроса и использовала их для установки те же переменные сеанса для Asp.Net. Затем, как только страница Asp.Net установила те же переменные, эта страница перенаправила на любую страницу, на которую ранее указала исходная страница входа. То же самое сработало в обратном порядке.

Итак, во втором сценарии пример потока изменился бы с:

Пользователь пытается получить доступ к какой-либо странице защищенного содержимого -> перенаправлен на страницу входа в систему -> войти в систему -> установить информацию о сеансе на основе успешного входа в систему -> перенаправлен обратно на страницу содержимого.

в

Пользователь пытается получить доступ к некоторой защищенной странице содержимого -> перенаправляется на страницу входа в систему -> вход в систему -> информация о сеансе, основанная на успешном входе в систему -> перенаправляется на страницу.net, передавая учетные данные для входа в систему и т. Д. -> страница aspx устанавливает информацию о сеансе а затем сразу же перенаправляет обратно на страницу содержимого.

Мы знали, что это взлом, но это работало в краткосрочной перспективе, пока мы не смогли преобразовать все сайты.

Возможно, есть лучший способ сделать это, используя новые настройки IIS (должен признать, что я не в курсе того, что могут сделать новые вкусности IIS7). Но вы можете сделать запрос XMLRequest со своей страницы входа ASP на страницу ASP.Net. Вы можете либо пройти необходимые настройки в данных Post, либо сделать так, чтобы страница.net заполняла сами данные сеанса, если логика достаточно проста. Страница.net затем вернет вам идентификатор сессии.net в файле cookie, вам необходимо установить его в коллекции файлов cookie пользователей ASP, чтобы у этого пользователя были и файлы cookie.net и Classic ASP.

Это сделало бы это.

Я реализовал это несколько лет назад, используя базу данных.

У Microsoft есть довольно хорошая статья об этом, хотя она немного устарела на данный момент.

Другие вопросы по тегам