Я звоню провайдеру оплаты кредитной картой (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 это не происходит, и идентификатор сеанса остается тем же, и все переменные сеанса доступны.