Заставьте Сессию истекать корректно в ASP.NET

CompositeItemWriter - это то, что вам нужно. Он позволяет вам составлять записи делегатов для записи элементов в несколько мест назначения.

Когда ваши авторы-делегаты имеют значение ItemStream (что, по-видимому, имеет место для вас), вам нужно зарегистрировать их как потоки на шаге, чтобы их методы обратного вызова из интерфейса ItemStream правильно вызывались в необходимых точках жизненного цикла шага (или вкратце, так что их ItemStream контракт правильно соблюдается). Вы можете найти более подробную информацию об этом в Регистрация ItemStream с помощью шага справочной документации.

Надеюсь, это поможет.

9
задан BartoszKP 22 January 2014 в 23:27
поделиться

3 ответа

Проблема, которую Вы описываете, происходит, потому что asp.net снова использует sessionid, если sessionid все еще будет существовать в подлинном cookie при вызове отказа (), то это просто снова использует его, необходимо явно создать новый sessionid afaik что-то как:

 HttpCookie mycookie = new HttpCookie("ASP.NET_SessionId");
    mycookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(mycookie);
12
ответ дан 4 December 2019 в 13:50
поделиться

Вы называете Сессию. Отказаться на своей специальной странице "Your session expired"? Если так, не делайте.

-1
ответ дан 4 December 2019 в 13:50
поделиться

У меня тоже сработал трюк с добавлением файлов cookie:

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
    ' Code that runs when a new session is started        
    If Session.IsNewSession Then
        'If Not IsNothing(Request.Headers("Cookie")) And Request.Headers("Cookie").IndexOf("ASP.NET_SessionId") >= 0 Then
        If Not IsNothing(Request.Headers("Cookie")) AndAlso Request.Headers("Cookie").IndexOf("ASP.NET_SessionId") >= 0 Then
            'VB code
            Dim MyCookie As HttpCookie = New HttpCookie("ASP.NET_SessionId")
            MyCookie.Expires = System.DateTime.Now.AddDays(-1)
            Response.Cookies.Add(MyCookie)

            'C# code
            'HttpCookie mycookie = new HttpCookie("ASP.NET_SessionId");    
            'mycookie.Expires = DateTime.Now.AddDays(-1);    
            'Response.Cookies.Add(mycookie);

            Response.Redirect("/timeout.aspx")
        End If
    End If       
End Sub
0
ответ дан 4 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: