2010-02-12 3 views
1

WCF를 사용한 파일 전송과 관련하여 많은 질문이 있습니다. "청크"모드에서 larges 파일을 포함하여 모든 것을 처리했습니다. 전송 당사자 (업로드를 시작하는 사람)로부터 파일 업로드를 취소 할 수있는 옵션과 전송이 수락되고 취소 될 때이를 알리는 콜백 인터페이스가 있습니다.취소 지원이 포함 된 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

일단 업로드가 시작되면 업로드를 취소하도록 서비스에 지시하는 작동 구현이 이미 있습니까? 또는 구현을 추가하려고하십니까? –

+0

예, 이미 클라이언트 측에서만 취소 옵션을 추가합니다. 내가 갖고 있지 않은 것은 서버 측에서 취소 할 수있는 옵션이었습니다. 하지만 이미 알아 냈어. 콜백 인터페이스에 서버의 취소 양식을 요청하는 메소드를 추가했습니다. 클라이언트 측에서 데이터 전송을 중단하고 서버에 취소를 확인한 다음 채널을 닫습니다. 잘 작동합니다. –

+0

나중에 보러 오는 사람들이 어떻게 문제를 해결했는지 볼 수 있도록 답장에 주석을 만드십시오. :) –

답변

0

이 잘 작동 내 솔루션이었다

추가를하는 방법을에 취소 양식을 요청하는 콜백 인터페이스. 클라이언트 측에서는 취소 요구가있을 때 true로 설정된 플래그를 사용합니다. 그런 다음 데이터 전송을 중지하고 서버에 취소를 확인한 다음 채널을 닫습니다 (임시 파일 정리 ...).

관련 문제