3
我們在Azure上運行ASP.NET MVC Web角色。整個網站需要https,使用[RequireHttps]屬性。作爲網站的一部分,我們已經與信用卡支付網關進行了整合。使用Azure,Https和遠程HTTP調用組合刪除會話
用戶可以登錄,無論他們留在網站上多長時間或訪問哪個網頁,一切都很好,直到他們到達付款步驟。付款涉及以下內容:
- 用戶單擊「購買」,並將其購物車信息張貼到控制器操作一。
- 控制器動作一。
- 從服務器向支付處理器的API發送http請求以獲取唯一的表單操作URL。
- 向用戶呈現收集付款信息的表單。
- 即形式,然後直接使用表單動作URL從步驟2
- 支付處理器將瀏覽器重定向到控制器動作的兩個,與令牌發佈了由瀏覽器到支付處理器。
- 控制器動作二
- 我們使用令牌從服務器向支付處理器發送最終請求,以完成交易。
- 我們向用戶呈現成功頁面。
在付款過程中的某個地方,用戶的會話被丟棄。我們不會明確地記錄任何人或做任何其他事情,似乎會導致這種情況。
其他有用的信息:
- 我們只有運行一個實例,所以我們使用的是InProc會話,而不是AppFabric的。
- 本地測試服務器沒問題。在可能的情況下,所有內容都是相同的。
- Azure模擬器中的一切都很好(據我測試它,一個完整的測試需要支付網關訪問模擬器,這是不可能的)。
- 認證cookie在瀏覽器中仍然完好無損。
- 一切都在會話超時窗口內發生。
- 如果我關閉https和一切運行在http上,那麼一切都很好。
什麼可能導致用戶的會話被刪除?它必須是結合Azure,https和遠程http請求的結果,因爲如果我將其中的一個從等式中刪除,那麼一切正常。
您正在使用的I幀?此外,使用Fiddler查看會話Cookie是否在來自付款處理器的重定向後重置。 – Rob
此外,當付款處理器重定向到您的網站是https? – Rob
沒有內聯框。重定向是https。 – robomark