Есть много вопросов относительно передачи файлов с WCF. У меня все работает, в том числе большие файлы в режиме «chunked». У меня есть возможность отменить загрузку файла с отправляющей стороны (той, которая запускает загрузку), и интерфейс обратного вызова, чтобы уведомить, когда передача принята и отменена.Передача файла 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);
}
Итак, как только загрузка началась, у вас уже есть рабочая реализация, которая сообщит службе об отмене загрузки? Или вы хотите добавить эту реализацию? –
Да, я уже добавляю возможность отмены, но только на стороне клиента. То, что у меня не было, - это вариант отмены со стороны сервера. Но неважно, что я уже понял это: Я добавил метод интерфейса обратного вызова, чтобы запросить форму аннулирования сервера. На стороне клиента я прекращаю отправку данных, подтверждаю отмену на сервер и закрываю канал. Его работа красиво. –
Сделайте этот комментарий в ответ, чтобы люди, которые приходят посмотреть позже, увидят, как вы решили проблему. :) –