Потеря моего идентификатора сеанса (и, следовательно, переменных сеанса) в ASP. net C# после установки KB4535102 - PullRequest
0 голосов
/ 22 апреля 2020

Я звоню провайдеру оплаты кредитной картой (Vantiv). Когда провайдер платежей перезванивает мой полный URL-адрес заказа, идентификатор сеанса изменяется, и поэтому все переменные сеанса устанавливаются на null. Доказано, что это произошло после KB4535102 (or KB4535104 on the Windows 2012 R2 server). Похоже, поток прерывается без команды для этого. После восстановления системы при удалении патча работает нормально. У кого-нибудь есть подсказка? Я давно этого ищу. Спасибо

targetFramework = "4.8"

Это происходит в iframe или с Page.Response.Redirect или с html, например:

 Response.Write("<form name=\"frmCheckout\" method=\"Post\" action=\"" + URLMercuryCheckout + "\" >");
 Response.Write("<input name=\"PaymentID\" type=\"hidden\" value=\"" + PaymentID + "\">");

Код в html вы можете найти выше, это также происходит с

Page.Response.Redirect ("https://hc.mercurycert.net/CheckoutiFrame.aspx?pid=8fcc6f32-3480-4868-9fa6-ecd7331a0724);

Сначала я настроил запрос платежа. В этом запросе необходимо указать: OrderCompleteURL (payment ok url) и CancelReturnURL (в случае нажатия кнопки отмены на сайте платежа). Этот вызов веб-сервиса возвращает PID-платеж. После этого я вызываю платежный сайт CheckoutiFrame. aspx с paymentid.

Когда пользователь вводит кредитную карту и нажимает кнопку «Оплатить», он вызывает URL-адрес в OrderCompleteURL. При возвращении Sessionid изменяется в моей веб-среде. (Также, когда CancelReturnURL был вызван мой сеанс пропал)

Это приводит к тому, что все мои переменные сеанса пропадают. В первой строке, где используется сеанс ["Переменная"]. ToString () эта ошибка происходит:

"Исключительный типа System.NullReferenceException произошла в WebMobile.dll, но не была обработана в коде пользователя "

При восстановлении windows до исправления KB4535102 это не происходит, и идентификатор сеанса остается тем же, и все переменные сеанса доступны.

...