2010-02-12 34 views
1

關於使用WCF進行文件傳輸有很多問題。 我已經得到了一切工作,包括「分塊」模式下的大文件。 我可以選擇從發送方(開始上傳的那個)取消文件上傳,並有一個回調接口來通知傳輸何時被接受和取消。帶取消支持的WCF文件傳輸

我的問題是取消從接收端上傳。我可以強制關閉頻道,但我想通知發送方取消。 我沒有得到這個解決方案。任何幫助?

感謝

更新:

我已經想通了。請參閱下面的評論。 服務接口看起來是這樣的:

順便說一句,服務接口看起來是這樣的:

[ServiceContract(SessionMode = SessionMode.Required, 
CallbackContract = typeof(IFileTransferServiceCallback))] 
public interface IFileTransferService 
{ 
     [OperationContract(IsOneWay = true)] 
     void RequestSendFile(FileTransferInvitation request); 

     [OperationContract(IsOneWay=true)] 
     void SendData(string id, byte[] data, int length); 

     [OperationContract(IsOneWay = true)] 
     void SendCancel(string id); 

     [OperationContract(IsOneWay = true)] 
     void SendEnd(string id); 

     [OperationContract(IsOneWay = true)] 
     void RequestSendCancelConfirmed(string id); 
} 


public interface IFileTransferServiceCallback 
{ 
     [OperationContract(IsOneWay = true)] 
     void SendStarted(FileTransferInvitation transfer); 

     [OperationContract(IsOneWay = true)] 
     void RequestSendCancel(string id); 

     [OperationContract(IsOneWay = true)] 
     void SendCompleted(string id, Exception error); 
} 

+0

因此,一旦上傳開始,你已經有一個工作實現,會告訴服務取消上傳?或者你正在尋找添加該實現? – 2010-02-12 15:47:16

+0

是的,我已經添加了取消選項,但只在客戶端。我沒有的是從服務器端取消選項。 但是沒關係,我已經弄明白了: 我在回調接口上添加了一個方法來請求服務器取消。在客戶端,我停止發送數據,確認取消服務器並關閉通道。 它的工作很好。 – 2010-02-12 17:52:29

+0

將該評論寫入答案,以便以後再來看的人會看到你是如何解決問題的。 :) – 2010-02-12 18:23:41

回答

0

這是我的解決方案,是工作的罰款:在

新增的方法回調接口從服務器請求取消。 在客戶端,我使用一個標誌,在取消請求時設置爲true。然後停止發送數據,確認取消服務器並關閉頻道(清理臨時文件...)。