Wir haben es herausgefunden.
Irgendwie ist das Attribut "SameSite" des Cookies "ASP.NET_SessionId" standardmäßig "Lax", und dies führt dazu, dass der Anforderung, die vom Javascript-Code des Zahlungsgateways gestellt wird, kein Sitzungscookie hinzugefügt wird.
Wir haben der Datei web.config die folgende Regel hinzugefügt, um diesen Wert zu überschreiben und auf "Keine" zu setzen.
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=None" />
<conditions>
</conditions>
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
UPDATE 1 : Nur das Hinzufügen der obigen Konfiguration löste das Problem für moderne Browser, aber wir stellten fest, dass wir immer noch Probleme mit älteren Versionen von Micosoft Edge und Internet Explorer hatten.
Daher mussten wir dem sessionState-Knoten in der Datei web.config das Attribut cookieSameSite = "None" hinzufügen.
<sessionState cookieSameSite="None" />
Seien Sie jedoch vorsichtig mit dieser Konfigurationsänderung, da ältere .net Framework-Versionen diese nicht unterstützen und auf Ihrer Site eine Fehlerseite angezeigt wird.
Übrigens haben wir immer noch Probleme mit Browsern in IOS 12. Aber ich denke, es hängt mit diesem bestätigten Fehler zusammen
UPDATE 2 : In der Antwort von zemien finden Sie mögliche Lösungen für das IOS-Problem
UPDATE 3 : Indem wir unsere Ergebnisse mit den Vorschlägen in Zemiens Antwort kombinieren, haben wir die folgenden Umschreiberegeln entwickelt. Wir haben diese Konfiguration in der Produktion verwendet. Aber Vorsicht: Es markiert alle Cookies mit dem Attribut "SameSite: None" für kompatible Browser und schließt das SameSite-Attribut, falls vorhanden, für inkompatible Browser aus. Es mag kompliziert erscheinen, aber ich habe versucht, es über Kommentarzeilen zu erklären.
Dies ist die endgültige Konfiguration, die wir in der Produktion verwenden:
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<preConditions>
<!-- Browsers incompatible with SameSite=None -->
<preCondition name="IncompatibleWithSameSiteNone" logicalGrouping="MatchAny">
<add input="{HTTP_USER_AGENT}" pattern="(CPU iPhone OS 12)|(iPad; CPU OS 12)" />
<add input="{HTTP_USER_AGENT}" pattern="(Chrome/5)|(Chrome/6)" />
<add input="{HTTP_USER_AGENT}" pattern="( OS X 10_14).*(Version/).*((Safari)|(KHTML, like Gecko)$)" />
</preCondition>
<!-- Rest of the browsers are assumed to be compatible with SameSite=None -->
<preCondition name="CompatibleWithSameSiteNone" logicalGrouping="MatchAll">
<add input="{HTTP_USER_AGENT}" pattern="(CPU iPhone OS 12)|(iPad; CPU OS 12)" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="(Chrome/5)|(Chrome/6)" negate="true" />
<add input="{HTTP_USER_AGENT}" pattern="( OS X 10_14).*(Version/).*((Safari)|(KHTML, like Gecko)$)" negate="true" />
</preCondition>
</preConditions>
<!-- Rule 1: Remove SameSite part from cookie for incompatible browsers if exists -->
<rule name="Remove_SameSiteCookie_IfExists_ForLegacyBrowsers" preCondition="IncompatibleWithSameSiteNone">
<match serverVariable="RESPONSE_Set-Cookie" pattern="(.*)(SameSite=.*)" />
<action type="Rewrite" value="{R:1}" />
</rule>
<!-- Rule 2: Override SameSite's value to None if exists, for compatible browsers -->
<rule name="Override_SameSiteCookie_IfExists_ForModernBrowsers" preCondition="CompatibleWithSameSiteNone">
<match serverVariable="RESPONSE_Set-Cookie" pattern="(.*)(SameSite=.*)" />
<action type="Rewrite" value="{R:1}; SameSite=None" />
</rule>
<!-- Rule 3: Add SameSite attribute with the value None if it does not exists, for compatible browsers -->
<rule name="Add_SameSiteCookie_IfNotExists_ForModernBrowsers" preCondition="CompatibleWithSameSiteNone">
<match serverVariable="RESPONSE_Set-Cookie" pattern=".*"/>
<!-- Condition explanation: Cookie data contains some string value but does not contain SameSite attribute -->
<conditions logicalGrouping="MatchAll">
<add input="{R:0}" pattern="^(?!\s*$).+"/>
<add input="{R:0}" pattern="SameSite=.*" negate="true"/>
</conditions>
<action type="Rewrite" value="{R:0}; SameSite=None" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>