2009-10-06 2 views
3

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

Есть два препятствия на этом:

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

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

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

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

ответ

7

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

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

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

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

в

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

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

+0

+1 Спасибо за ваш ответ, я обязательно рассмотрю это как обходной путь. –

+0

Мы также сделали это, только вместо того, чтобы размещать содержимое сеанса непосредственно на принимающей странице .NET (и наоборот), мы сохранили их в базе данных с взаимным доступом и просто передали токен доступа. –

1

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

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

+0

+1 Я изучу возможности IIS7. Спасибо за напоминание о XMLRequest, это был бы хороший способ обойти проблему с множественным перенаправлением. –

0

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

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