ASP. NET MVC 5 - Идентификатор сеанса изменяется при ответе Cybersource на действие mvc. Потеря объектов сеанса - PullRequest
0 голосов
/ 08 мая 2020

ASP. NET MVC 5 приложение на. NET framework 4.5.2.

Использование CyberSource для отправки платежа.

При отправке параметра отправки платежа в CyberSource: «override_custom_receipt_page», который указывает MVC действие, к которому Cybersource должен вернуться после обработки платежа.

В производственной среде платеж отправляется на

 https://secureacceptance.cybersource.com . . . .

Все работает нормально.

В локальных средах, средах DEV, QA платеж отправляется на

 https://testsecureacceptance.cybersource.com . . . .

И в этих средах CS возвращается к указанному MVC действие, но SessionId отличается, а не SessionId сеанса, отправившего запрос в CS.

И, конечно же, MVC action не может найти никаких объектов Session, необходимых для обработки ответа от CS.

И ответ обрабатывается неправильно.

Я погуглил, нашел информацию о смене идентификатора сеанса, попробовал несколько рекомендаций, не помогает.

Global.asax.cs действительно имеет Session_Start:

protected void Session_Start()
{
     Session["init"] = 0;
}

Кроме того, в web.config:

<sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="20">    
    <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<..value here..>" connectionStringName="DefaultConnection" />
    </providers>
</sessionState>

среды DEV, QA, PROD находятся в Azure.

Кроме того, кажется, что до сих пор этот код работал нормально в течение 5 лет, затем он сломался in Local, DEV, QA.

Похоже, что он мог сломаться после того, как среды DEV и QA были перемещены в Azure.

Но, Local env отсутствует в Azure, это мой собственный ноутбук.

Нет балансировщика нагрузки для Local, DEV, QA.

ТАКЖЕ, я только что нашел информацию о том, что "Chrome изменено, как файлы cookie работают с De c 2019 ", об атрибуте sameSite. Но, опять же - почему тот же код работает в производственной среде без sameSite и не работает в другой среде?

Если кто-нибудь может иметь представление о том, что может происходить, почему CS не может вернуться к тому же сессия, мы будем очень признательны.

Большое спасибо

1 Ответ

0 голосов
/ 08 мая 2020

Подобная проблема возникла при работе с другим платежным шлюзом. В нашем случае переменная сеанса работала в DEV, но не работала в производственной среде.

Это в основном потому, что сеанс прикреплен к потоку, и когда платежный шлюз возвращается на URL-адрес обратного вызова веб-сайта, он был создание нового потока и потеря переменной сеанса.

Для решения проблемы мы передали ссылочный номер (в нашем случае это был номер счета-фактуры) в платежный шлюз. После успешной оплаты шлюз вернул ссылочный номер вместе с другими деталями. Мы получили данные о клиенте по ссылочному номеру и перешли к следующим шагам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...