Мой сервисный контракт WCF имеет следующие методы:
[OperationContract]
string GetFile(int id);
[OperationContract]
void UploadFile(int id, string text);
GetFile возвращает текст файла, а UploadFile отправляет некоторый контент файла на сервер.
Существует странное поведение, когда размер файла составляет около нескольких МБ (4,37 МБ в моем случае): GetFile работает нормально, и клиент без проблем получает длинный текст, но UploadFile не может отправить тот же файл в сервер. Клиент зависает при выполнении этого метода, и он, похоже, не собирается завершать операцию. Я ждал несколько минут, но результата не было, и я принудительно остановил клиента.
Итак, мой вопрос: есть ли разница между направлениями такой передачи? Я знаю о потоковой передаче WCF, которая должна использоваться для отправки больших файлов на сервер, и я собираюсь изменить свой код, используя его. Интересно, почему проблема возникает только тогда, когда файл передается на сервер, а сервер возвращает данные того же размера правильно?
Обновление. UploadFile не должен быть операцией OneWay, потому что мне нужно знать, была ли она успешной.
Выполнение не обогащает сервер. Я установил точку останова на стороне сервера, и она не срабатывает.