powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как прервать закачку файла в режиме Streamed?
1 сообщений из 1, страница 1 из 1
Как прервать закачку файла в режиме Streamed?
    #39192928
Greedy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Тестирую передачу файлов в Streamed режиме (привязка basicHttpBinding, размер файлов 100-300Мб). По значению поля RemoteFileInfo.Status метод сервиса должен принять решение о допустимости закачки и либо выполнить ее, либо вернуть значение указывающее, что закачка невозможна.
Проблема в том, что пока весь поток данных не считается на сервере, проверки статуса не происходит и сервер загружен получением потока. То есть, допустим, производится попытка передать файл 1Гб, но клиент не имеет права на выполнение данной операции, как прервать получение данных и вернуть соответствующее сообщение клиенту?

Контракт:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
[ServiceContract]
    public interface IService1
    {
        [OperationContract]
        UploadFileInfo UploadFile(RemoteFileInfo data);
    }


    [MessageContract]
    public class RemoteFileInfo
    {
        [MessageHeader]
        public string FileName;

        [MessageHeader(MustUnderstand = true)]
        public int Status;

        [MessageBodyMember(Order = 1)]
        public System.IO.Stream FileByteStream;
    }

[MessageContract]
    public class UploadFileInfo
    {
        [MessageHeader(MustUnderstand = true)]
        public string FileName1;
    }



Реализация сервиса:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public class Service1 : IService1
    {
        public UploadFileInfo UploadFile(RemoteFileInfo data)
        {
            UploadFileInfo Result = new UploadFileInfo();

            string str=System.Guid.NewGuid().ToString() +"_"+ data.FileName;
            if (data.Status== 1)
            {
                Result.FileName1 = "";
                return Result;
            }

            using (Stream fs = File.Create(@"C:\test\" + str))
            {
                const int bufferLen = 65000;
                byte[] buffer = new byte[bufferLen];
                int count = 0;
                while ((count = data.FileByteStream.Read(buffer, 0, bufferLen)) > 0)
                {
                    fs.Write(buffer, 0, count);
                }
                fs.Close();
                data.FileByteStream.Close();

                Result.FileName1 = str;
            }

            return Result;
        }
    }
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как прервать закачку файла в режиме Streamed?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]