리디렉션을 수행하기 전에 일부 타사 제공 업체에 연락해야하는 이벤트가있어서 (전자 상거래 사이트에서 최종 지불 페이지로 생각 함) 관련 지연이 있습니다. 그 처리. 이러한 제 3 자 제공 업체가 두 번 이상 연락을받지 않는 것이 중요하며 때로는 참을성이없는 사용자가 페이지를 새로 고침 (따라서 데이터를 다시 제출) 할 수 있습니다. 일반적인 코드 구조는 다음과 같습니다 사용자가 페이지를 새로 고치는 경우Response.Redirect가 재발 방지 코드로 인해 실행되지 않음
If Session("orderStatus") <> 'processing' Then
Session("orderStatus") = 'processing'
DoThirdPartyStuffThatTakesSomeTime()
Response.Redirect("confirmationPage.asp", True)
End If
문제는의 Response.Redirect를이 (나머지 코드는 원본 제출에서 리디렉션하기 전에 실행에도 불구하고) 발생하지 않습니다. 새로운 제출은 우선 순위가 높은 브라우저 용 새 스레드를 만드는 것으로 보입니다. 제 3 자 공급자가 두 번째로 접촉하는 것을 방지하기 위해이 코드를 건너 뛰고 리디렉션이 없으므로 동일한 페이지로 다시 돌아옵니다. . 첫 번째 제출이 완료되기 전에 전체 두 번째 제출이 완료되었을 수 있습니다.
페이지의 후속 제출물을 모두 무시할 수 있지만 여전히 리디렉션 작업을 수행하는 방법에 대한 도움이 필요하십니까?
감사
당신이if
구조에서 재 이동
안녕하세요, 답변 해 주셔서 감사합니다. 불행히도 리디렉션은 타사의 작업이 완료된 후에 만 발생할 수 있습니다. 나가서 그것을 옮기면, 두 번째 제출이 먼저 타격을 입히고 타사 물건이 완료되기 전에 리디렉션됩니다. – Marco
그런 다음 'DoThirdPartyStuffThatTakesSomeTime()' 함수의 끝으로 이동하십시오. – Oded
이미 있습니다 - 내 코드 샘플은 단지 설명입니다. 이는 두 개의 스레드가 두 가지 다른 방법으로 동시에 동일한 이벤트를 실행하는 것과 더 관련이 있습니다 (세션 변수 중지 코드가 두 번 실행 됨). 마지막 스레드가 브라우저가있는 곳에서 우선 순위가있는 반면, 먼저 우선 순위를 취해야합니다. – Marco