Передача файлов WCF с поддержкой отмены - PullRequest
1 голос
/ 12 февраля 2010

Есть много вопросов относительно передачи файлов с WCF. У меня все работает, включая большие файлы в режиме "chunked". У меня есть возможность отменить загрузку файла от отправляющей стороны (той, которая начинает загрузку) и интерфейс обратного вызова, чтобы уведомить, когда передача принята, и отменена.

Моя проблема - отмена загрузки с получающего конца. Я могу просто заставить канал закрыться, но я хотел бы уведомить отправляющую сторону об отмене. Я не получаю решение для этого. Любая помощь?

Спасибо

Обновление:

Я уже понял это. Смотрите комментарий ниже. Интерфейс сервиса выглядит так:

Кстати, интерфейс сервиса выглядит так:

</p> <pre><code>[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); }

1 Ответ

0 голосов
/ 25 февраля 2010

Это было мое решение, которое работает нормально:

Добавлен метод в интерфейсе обратного вызова для запроса отмены с сервера. На стороне клиента я использую флаг, который установлен в true, когда сделан запрос отмены. Затем прекратите отправку данных, подтвердите отмену на сервер и закройте канал (очистка временных файлов ...).

...