2011-01-10 61 views
0

我正在爲WebService創建一個客戶端,並且WebService的一個方法是上傳方法。對此方法的調用在BackgroundWorker中完成,並出現一個對話框ProgressBar。 但我希望用戶能夠中止文件的上傳。 我試圖調用Abort()方法。當調用Abort時,WS上傳調用中的BackgroundWorker上啓動了一個異常,正如預期的那樣。問題在於服務器完成調用並將文件添加到數據庫的大部分時間。我可以取消對WebService的同步調用嗎?

是否有另一種方法來中止WS調用?

+0

如何上傳文件?你傳遞給那個方法的是什麼論點? – dzendras 2011-01-10 12:20:34

+0

該文件的內容是一個字節[]。 – jpsstavares 2011-01-10 17:50:31

回答

2

一旦發出請求,就無法告訴客戶端將在哪個階段調用中止 - 所以很可能請求已到達服務器並且服務器已在處理該請求。所以即使你可以從客戶端中止,服務器已經處理了請求。這同樣適用於異步Web請求。完整的證明解決方案是補償事務,即在這種情況下,中止應該調用服務器來刪除文件(如果文件不存在,服務器不應該引發錯誤)。

0

VinayC是正確的,一旦服務啓動,服務器進程接管。如果你正在批量發起請求或者有一些可以中斷的循環,那麼你可以創建另一個服務調用來取消初始請求。取消請求只是設置一些在啓動請求中被檢查的變量。

但是你也想做一個由VinayC提到的完整證明解決方案,因爲取消請求可能不會在服務器端發起請求完成之後進入。

相關問題