@ JustinP8 да, вызов изображения не на 100% гарантированно запускает сеанс, но aspx вызывает его точно. Хитрость в вашем решении - это iframe.
я есть 2 приложения, работающие в одном домене. Поток идет так:
Приложение 1Приложение 1 ->Приложение 2Приложение 2 ->Приложение 1Приложение 1 это WebForms (asp.net framework 2.0),Приложение 2 такое ASP.NET MVC 3 (фреймворк 4.0)
Пока пользователь включенПриложение 2Я хотел бы сохранить сеанс наПриложение 1.
Во время строительстваПриложение 1мы встроили обработчик «KeepSessionAlive.ashx», который просто выполняет Session («KeepSesssionAlive») = DateTime.Now () при запросе, как описано вэта статья, Мы сделали это, потому что это приложение для оценки, и во время некоторых сложных этапов теста пользователю может потребоваться много времени, прежде чем он выберет ответ. Вот код:
Public Class KeepSessionAlive : Implements IHttpHandler, IRequiresSessionState
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Session("KeepSessionAlive") = DateTime.Now
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
Затем я просто вызываю этот обработчик периодически в течениеApplication 1
используя jQuery:$.post("KeepSessionAlive.ashx", null, function() { });
Итак, я подумал, что мог бы вызвать тот же обработчик изПриложение 2 используя $ .ajax (), я даже изучил использование jsonp, но, похоже, это не работает. Я написал код для записи всех переменных сеанса из KeepSessionAlive.ashx в файл и даже для возврата чего-либо через ответ jsonp, и данные выглядели правильно.
Тем не менее, делая тест, в котором я задержался вПриложение 2 достаточно долго дляПриложение 1сеанс истекает, а затем пытается сделать переход отПриложение 1 ->Приложение 2когда я доберусь до страницы возврата вПриложение 1 Меня встретили сSystem.NullReferenceException: Object reference not set to an instance of an object.
ошибка, потому что я пытаюсь сослаться на один из объектов в сеансе. Единственное значение в сеансе - Session (KeepSessionAlive). Я предполагаю, что это потому, что он создал новый сеанс, но если это так, то почему мои тесты, которые записывали значения сеанса, отображали всеПриложение 1переменные сессии?
Есть ли другие методы, которые я могу использовать, чтобы сохранитьПриложение 1Session жив, пока пользователь заполняет формы вПриложение 2?