Перенаправление ASP Classic `Session_OnEnd` не работает

У меня есть сайт, написанный на двух языках, классическом ASP и PHP. У меня есть система, позволяющая пользователю войти в систему на обоих языках, которая в основном включает ASP, запрашивающий PHP-скрипт эй, я вошел в систему? через Почту. В целом это работает довольно хорошо, но есть проблема, когда сеанс ASP иногда неожиданно завершается, но пользователь все еще находится в системе на стороне PHP.

Итак, что я пытаюсь сделать, это настроить файл ASP Global.asa с подпрограммой Session_OnEnd, которая перенаправляет на PHP-скрипт, который отключает пользователя от PHP. Таким образом, если сеанс ASP завершается, пользователь просто полностью выходит из системы, а не остается наполовину вошедшим в систему.

Это весь мой Global.asa файл:

<!--METADATA TYPE="TypeLib" NAME="Microsoft ActiveX Data Objects 2.8 Library" UUID="{2A75196C-D9EB-4129-B803-931327F72D5C}" VERSION="2.8"-->
<script language="vbscript" runat="server">
    sub Session_OnStart
        Session.CodePage = 65001
        Session.LCID = 1033
    end sub
    sub Session_OnEnd
        Response.Redirect("/login.php?logout")
    end sub
</script>

Короче перенаправление не работает. Я тестирую, запуская сценарий ASP, который делает Session.Abandon. Сеанс завершается, но перенаправление не происходит.

Сервер IIS 10 работает на Windows Server 2016.

Любая идея, что я делаю неправильно?

ОБНОВЛЕНИЕ: я почти уверен, что Sub просто не запускается; и это не сбой самого перенаправления


person Stephen R    schedule 10.02.2021    source источник
comment
Взгляните на это: Session_OnEnd, классический ASP и IIS 7.0. Кажется родственным.   -  person Kul-Tigin    schedule 10.02.2021
comment
@ Кул-Тигин Я видел эту статью. Добавление runOnEndAnonymously="false" в web.config не решило проблему.   -  person Stephen R    schedule 10.02.2021
comment
Тогда я не вижу выхода с global.asa. Вы открыты для различных решений? Могу глянуть в свободное время. Я немного помню метод via POST из здесь.   -  person Kul-Tigin    schedule 10.02.2021
comment
Правильно ли я считаю, что Session.Abandon - правильный способ проверить это?   -  person Stephen R    schedule 12.02.2021
comment
Да, ты. Но не для того, чтобы ожидать, что Response.Redirect сработает в событии, вызываемом асинхронно.   -  person Kul-Tigin    schedule 12.02.2021
comment
Не асинхронно. Я вызываю файл test.asp, содержащий <% Session.Abandon %>   -  person Stephen R    schedule 12.02.2021
comment
Session_OnEnd здесь асинхронный. Это не часть вашего test.asp запроса, а просто расширение приложения ASP.   -  person Kul-Tigin    schedule 13.02.2021
comment
Ладно, я в замешательстве. Вы хотите сказать, что Response.Redirect просто нельзя заставить работать внутри Session_OnEnd? Итак (возможно) я правильно активирую сабвуфер, но эта конкретная команда там не сработает? Я видел несколько старых сообщений/статей в Интернете, где люди, кажется, сделали эту работу.   -  person Stephen R    schedule 13.02.2021
comment
Да, вы правильно поняли. В отличие от Session_OnStart, Session_OnEnd запускается асинхронно. Статьи, которые вы видели, вероятно, содержат примеры для _OnStart. Взгляните на Session_OnStart. Событие и Событие Session_OnEnd. И, пожалуйста, внимательно прочитайте определения. Вы поймете, как оба события работают по-разному.   -  person Kul-Tigin    schedule 13.02.2021
comment
Ага. Response объект недоступен. Вот мой ответ. :-( Спасибо   -  person Stephen R    schedule 13.02.2021