Компания, в которой я работаю, осуществляет переход от классических программ ASP к программам ASP.NET для нашего программного обеспечения для внутренней сети. В конце концов, все будет написано в ASP.NET, но из-за нехватки времени все еще существует ряд программ, использующих классический ASP.
Для компенсации мы написали функции, которые позволяют перенаправлять и автологины между классическими программами ASP и программами ASP.NET. Однако я начинаю видеть проблему с удержанием состояния сеанса для нашего программного обеспечения ASP.NET. Если пользователь использует программу ASP.NET, затем работает в классической программе ASP, а затем возвращается к этой программе ASP.NET, часто аутентификация пользователя для программы ASP.NET все еще выполняется, но сеанс пользователя теряется, что приводит к ошибке при выполнении какой-либо функции в программе.
Я пытаюсь зафиксировать потерю состояния сеанса в событии Session_End
global.asax, которое перенаправит пользователя на страницу входа, но это не сработало. Кто-нибудь еще сталкивался с подобной проблемой, когда пользователи переходили от классического ASP к ASP.NET и проигрывали сеансы? Это даже моя настоящая проблема здесь? Это единственное, что я вижу как проблему.
EDIT
Это то, что мы делаем, чтобы перенаправить пользователей на страницу ASP.NET с классической страницы asp.
Мы создаем хеш MD5 на основе идентификатора пользователя и даты и отправляем его на страницу redirect.aspx через строку запроса. Оттуда страница aspx создает свой собственный MD5 на основе идентификатора пользователя и даты, которые передаются через строку запроса. Если 2 хэша идентичны, пользователь проходит проверку подлинности, и программа загружается. Вот пример:
Классический ASP:
strDate = Year(Now()) & right("0" & Month(Now()), 2) & right("0" & Day(Now()), 2)
key = MD5(SessionUserID & strDate)
Response.Redirect "/redirect.aspx?key="&key&"&lpid="&ProgramID&"&unum="&SessionUserNum&"&uid="&SessionUserID&"&gid="&SessionGroupID
Redirect.aspx:
string key = Request.QueryString["key"];
//SetDesignModeState Variables:
if (getMd5Hash(Request.QueryString["uid"] + DateTime.Today.ToString("yyyyMMdd")) == key)
{
Session["SessionGroupID"] = Request.QueryString["gid"];
Session["SessionUserNum"] = Request.QueryString["unum"];
Session["SessionUserID"] = Request.QueryString["uid"];
string appID = Request.QueryString["lpid"];
FormsAuthentication.SetAuthCookie(Request.QueryString["uid"], false);
//redirect to ASP.NET page...