Сеанс сбрасывается при поступлении пост-звонка на страницу в приложении веб-формы. - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть приложение ASP. Net 4.7 на основе веб-формы, требование на определенной странице, мне нужно отправить форму по URL-адресу (внешнему URL-адресу) вне приложения с некоторыми параметрами, мне нужно отправить URL-адрес возврата (это будет URL-адрес текущей страницы моего приложения), приложение, работающее на нем (внешний URL-адрес), будет обрабатывать данные, поступающие через форму, и перенаправлять на возвращаемый URL-адрес. Теперь проблема заключается в том, когда происходит получение этого пост-обратного вызова в моем приложении. сеанс моего приложения сбрасывается, и все данные теряются, и я вижу в контексте, что идентификатор сеанса отличается от предыдущего, и из-за моих проверок мое приложение перенаправляет его на страницу входа. Может ли кто-нибудь помочь, почему мой сеанс восстанавливается.

Это мои настройки web.config.

    <sessionState 
  mode="InProc" 
  timeout="200" 
  cookieless="false" 
  cookieSameSite="Lax"
/>

Вот как я публикую свои данные.

System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Write("<html><head>");
System.Web.HttpContext.Current.Response.Write(string.Format("</head><body onload=\"document.{0}.submit()\">", FormName));
System.Web.HttpContext.Current.Response.Write(string.Format("<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >", FormName, "POST", ExternalUrl));
System.Web.HttpContext.Current.Response.Write(string.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", "Var1", Var1));
System.Web.HttpContext.Current.Response.Write(string.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", "ReturnUrl", CurrentApplicationUrl));
System.Web.HttpContext.Current.Response.Write(string.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", "Var2", Var2));
System.Web.HttpContext.Current.Response.Write("</form>");
System.Web.HttpContext.Current.Response.Write("</body></html>");

HttpContext.Current.Response.Flush(); // 
HttpContext.Current.Response.SuppressContent = true;  
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

1 Ответ

0 голосов
/ 24 марта 2020

У меня была такая же проблема. После многих дней проб и ошибок я обнаружил конфликт сертификатов между сертификатом localhost, который использует IIS Express, и сертификатом, который использует мой локальный IIS. Мне пришлось удалить сертификат, выданный RSA, из папки «Личные» / «Сертификаты» и из папки «Доверенные ...» / «Сертификаты» в MM C (с правами администратора). Код был в порядке. Конфликт состоял в том, что оба сертификата сертифицировали «localhost». Надеюсь, это поможет.

...