我有一個通用處理程序(.ashx)頁面,它接收來自提供者的XML文檔。然後,我將該XML文檔發送給第三方進行承保。我等待第三方的迴應,然後將此回覆傳遞給主要提供商。所有這些都在30秒或更短的時間內發生。將響應返回給客戶端後繼續處理
我的問題是,領先供應商將只關閉連接並繼續前進,最多隻能等待30秒。我試圖啓動一個內部計時器,如果我沒有收到第三方承銷商的回覆,請將回復發送給主要提供商。這一切工作正常。
我想要做的是將回復發送給主要提供商,但繼續等待第三方承保人的回覆。他們會把它交給我們......但有時可能需要幾分鐘。
我已經嘗試了所有我已經得到了,這樣做的
Response.Flush();
Response.Close();
Response.End();
context.ApplicationInstance.CompleteRequest();
組合的種種是一個)拋出約線程錯誤被中止,或「無法因爲代碼是計算表達式優化的或本地框架位於調用堆棧之上「,或者b)客戶端認爲請求被終止並且它從未收到響應。
我不能實現一個隊列類型的體系結構,而不需要重新編寫大部分邏輯,即使這樣我也不想這樣做,因爲它會增加響應的處理時間。
有什麼建議嗎?看起來.Close()和.End()並不意味着我認爲它們是如何工作的,我不知道應該用什麼來代替。
我不知道這將如何幫助。我需要等第三方承銷商的迴應,至少有一段時間。但無論我做什麼,我都無法讓IIS實際返回響應,因爲它現在已經寫好了。它總是等到線程死亡。我不確定你的解決方案如何幫助我,但也許我錯過了一些東西。 – 2011-06-09 19:36:29
不確定要了解你的需要。你說過「我想要做的就是將回復發送給主要提供商,但要繼續等待第三方承銷商的迴應。」你想對結果做什麼? – 2011-06-09 19:39:16
我會得到響應並將其存儲在數據庫中。但是如果我在另一個線程上啓動另一個方法,我將如何收到響應?我已經有了一個HttpWebRequest對象......我不能只在線程的某個地方存儲它,對嗎? – 2011-06-09 19:48:12