powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Передача массива byte из Silverlight в WCF-сервис
8 сообщений из 8, страница 1 из 1
Передача массива byte из Silverlight в WCF-сервис
    #37595179
new_sergei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с такой проблемой - не могу передать массив типа byte из Silverlight в WCF-сервис.
Проблема, скорее всего, из-за размера массива - что-то около 15,5 мБ.

Вот код:

Silverlight

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 Stream stream = streamInfo.Stream;
                MemoryStream ms = new MemoryStream();

                stream.CopyTo(ms);
                ms.ToArray();

                byte[] streamArray = ms.ToArray();
                //byte[] streamArray = new byte[100];

                ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client();

                proxy.TestHelloWorldCompleted += new EventHandler<ServiceReference1.TestHelloWorldCompletedEventArgs>(proxy_TestHelloWorldCompleted);
                ByteArray array = new ByteArray();
                array.Array = streamArray;
                proxy.TestHelloWorldAsync(array);

...


        void proxy_TestHelloWorldCompleted(object sender, ServiceReference1.TestHelloWorldCompletedEventArgs e)
        {

        }



WCF

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        public string TestHelloWorld(ByteArray array)
        {
            MemoryStream ms = new MemoryStream();
            ms.Write(array.Array, 0, array.Array.Length);
            Stream stream = ms;
            
            Workbook workbook = this.Excel_Load(stream);
            ObservableCollection<cOrder> orders = this.getOrdersFromExcell(workbook);
            Sql.OrderListAdd(orders.ToList(), -1, -1);

            return "Hello, world!";
        }

.....

    [DataContract]
    public class ByteArray
    {
        [DataMember]
        public byte[] Array { get; set; }
    }



Я пробовал указывать в Web.config вот такое:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<binding name="LargeBinding">
          <binaryMessageEncoding
            maxReadPoolSize="2147483647"
            maxSessionSize="2147483647"
            maxWritePoolSize="2147483647">
            <readerQuotas
              maxArrayLength="2147483647"
              maxDepth="2147483647"
              maxBytesPerRead="2147483647"
              maxNameTableCharCount="2147483647"
              maxStringContentLength="2147483647" />
          </binaryMessageEncoding>
          <httpTransport
            maxBufferSize="2147483647"
            maxReceivedMessageSize="2147483647"
            maxBufferPoolSize="2147483647"/>
        </binding>



Но ничего не получается... Выдается ошибка " Удаленный сервер возвратил ошибку: NotFound. "
Но дело в том, что когда я пытаюсь передать массив byte размером в 100 байт, то всё прокатывает.
В чём тут дело?
...
Рейтинг: 0 / 0
Передача массива byte из Silverlight в WCF-сервис
    #37596804
new_sergei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, опытным путём было установлено, что можно передать только массив в 16 Кб. Я в Web.config выставил все значения по максимуму - но помогает. Может, ещё где-то надо прописать максимальный размер? Но где?
...
Рейтинг: 0 / 0
Передача массива byte из Silverlight в WCF-сервис
    #37597162
new_sergei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Streaming тоже не прокатывает....
...
Рейтинг: 0 / 0
Передача массива byte из Silverlight в WCF-сервис
    #37597462
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
new_sergei,

на обоих сторонах надо менять предел.
...
Рейтинг: 0 / 0
Передача массива byte из Silverlight в WCF-сервис
    #37597727
new_sergei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeiK,

я менял и клиентский конфиг, и серверный... Всё равно не работает. Причём, судя по всему не работает именно binding

Вот серверный конфиг:

Код: c#
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
      <httpRuntime maxRequestLength="2147483647" />
    </system.web>

    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                        maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>   
            </basicHttpBinding>
        </bindings>
      
      <client>
        <endpoint address="http://localhost:3203/Service1.svc"  binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
            name="BasicHttpBinding_IService1" />
      </client>
      
    </system.serviceModel>
</configuration>



Клиентский

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<configuration>
    <system.serviceModel>


      <bindings>
            <basicHttpBinding>
               <binding name="BasicHttpBinding_IService1" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647" >
                    <security mode="None" />
                </binding>

            </basicHttpBinding>
        </bindings>
        <client>
          
                      <endpoint address="http://localhost:3203/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
                name="BasicHttpBinding_IService1" />


        </client>
    </system.serviceModel>
</configuration>



Пробовал прописывать в свойствах name, bindingConfiguration и полный путь к сервису, пробовал указывать и класс вместо интерфейса... И ещё кучу чего пробовал - не работает.
Когда пробую поставить минимальные значения (10) вместо 2147483647, то вываливается тот же тип ошибки - из этого я делаю вывод о том, что binding не работает...
...
Рейтинг: 0 / 0
Передача массива byte из Silverlight в WCF-сервис
    #37597986
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У IIS 7 есть ограничение на размер сообщения. Может из-за этого? Конфигурацию сейчас не скажу, попробуйте вот отсюда: http://www.sql.ru/forum/actualthread.aspx?tid=680528 (Не помню, помогло ли мне, но что-то в этом направлении помогло :) )
...
Рейтинг: 0 / 0
Передача массива byte из Silverlight в WCF-сервис
    #37598470
new_sergei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня 6-ой IIS
...
Рейтинг: 0 / 0
Передача массива byte из Silverlight в WCF-сервис
    #37638713
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мде.. тоже скоро такое предстоит
а если сделать примерно так
Код: c#
1.
2.
byte[] array = ...
string result = BitConverter.ToString(array);


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


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