2009-10-15 39 views
2

在一個C#ASP .NET應用程序中,我有一個Web服務,它接收一個DataSet,處理它並返回它。當Web服務返回結果時,如何檢測連接何時中斷?

返回它可能需要長達一分鐘的慢速連接。如果在Web服務方法的最後一行運行後數據仍在發送時連接斷開,後臺會發生什麼情況?

我試着將我的web服務的代碼包裝在catch塊中,並在下載時斷開連接,但web服務中沒有拋出異常。我倒是以某種方式檢測錯誤是這樣的:

 
[WebMethod(Description = "Process data")] 
public DataSet Process(DataSet data) 
{ 
    bool success = true; 
    StartDatabaseTransaction(); 
    DataSet result = Process(data); 
    try 
    { 
     return result; //quickly pull out cable after running this 
    } 
    catch 
    { 
     success = false; //never gets here 
    } 
    finally 
    { 
     if (success) CommitTransaction(); else RollBackTransaction(); 
    } 
    return null; 
} 

回答

1

如果我正確地讀你的問題和代碼,你將永遠不會打的,因爲webMethods的工作方式漁獲物。如果您想要捕獲超時錯誤,則需要使用數據集的接收方法。在返回的時候,正在工作的網絡服務器正在轉換和傳輸數據。

1

我不確定這是否正確,但是 如果這很重要,您需要創建自己的「批准」呼叫從呼叫者到服務器。 一旦服務器發送它的回覆,我不認爲它等待確認。

它周圍的一些方法:使用Web服務器和Web服務之間的消息傳遞系統(MSMQ),我覺得跟短信就可以實現這個目標作爲guarantied送貨服務

或者 - 使客戶端發送一個通過電話引導,並讓網絡服務登錄。如果客戶沒有及時得到答覆,讓他再次使用相同的guid發出呼叫。如果服務器已經記錄了此GUID,則表示該調用是流程(並且您需要根據業務邏輯進行處理)。

相關問題