На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Большие данные в WCF сервисе приводят к исключению. , Где устанавливается размер!
    Сервис тащит данные из таблицы БД! Если таблица содеджит мало инфы, всё гуд.
    Если же таблица содержит слишком много данных, при выполнении Fill для DataSet сервис кидает исключение.

    Какой вообще максимальный размер подгружаемых данных для сервиса и где он регулируется?
    Наверное ещё следует учитывать размер передаваемых данных или этот процесс Framework берёт на себя?
      призрак - конфижится все это:
      ExpandedWrap disabled
        <bindings>
              <netTcpBinding>
                <binding name="NewBinding0" receiveTimeout="00:30:00" maxReceivedMessageSize="2000000000" />
              </netTcpBinding>
            </bindings>
        там много параметров "про это"
        ExpandedWrap disabled
                <netTcpBinding>
                  <binding name="b1" maxBufferSize="1048576" maxReceivedMessageSize="1048576">
                    <readerQuotas maxArrayLength="1048576"/>
                  </binding>
                </netTcpBinding>


        Не помню какие самые важные - эксперементируйте.
          Alexus, угадаю с одного раза :)
          Цитата PIL @
          receiveTimeout="00:30:00" maxReceivedMessageSize="2000000000"
            Поэкспериментировал, пока безрезультатно!
            Правда сервис уже отваливается с другой ошибкой, но в том же месте, при Fill DataSet.
              Цитата призрак @
              Поэкспериментировал, пока безрезультатно!

              Нет результатно :)

              Цитата призрак @
              Правда сервис уже отваливается с другой ошибкой, но в том же месте, при Fill DataSet.

              Если передаешь через границы датасеты нужно давать таблицам имена в своем датасете.

              Выложи хотя бы текст исключения.
                вот код
                ExpandedWrap disabled
                   using (SqlConnection sqlConnection = new SqlConnection(connectionString))
                    {
                      sqlConnection.Open();
                   
                      SqlCommand comm = new SqlCommand();
                      comm.Connection = sqlConnection;
                      comm.CommandText = string.Format("Select * From " + "dbo.[Test]");
                      comm.CommandType = CommandType.Text;
                   
                      DataSet dataSet = new DataSet();
                   
                      SqlDataAdapter adapter = new SqlDataAdapter(comm);
                      adapter.Fill(dataSet, "dbo.[Test]");
                   
                      ......
                     }


                вот исключение - The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.

                вот настройки
                ExpandedWrap disabled
                          <binding name="Binding1"
                                 receiveTimeout="00:10:00"
                                 sendTimeout="00:10:00"
                                 openTimeout="00:10:00"
                                 closeTimeout="00:10:00"
                                 maxReceivedMessageSize="2000000000"
                            <security mode="None" />
                          </binding>
                  радуют меня люди не обращающие внимания на текст ошибок: "...For more information about the error..." ;)
                  да и вообще это клиентский exception.
                  серверный поймайте, приаттачте пожалуйста дебаггер к серверу если не охода конфиги править и включите выпадание в код при возникновении исключения.
                    Цитата унун @
                    радуют меня люди не обращающие внимания на текст ошибок: "...For more information about the error..." ;)
                    да и вообще это клиентский exception.
                    серверный поймайте, приаттачте пожалуйста дебаггер к серверу если не охода конфиги править и включите выпадание в код при возникновении исключения.

                    Текст я читал, только от этого мне лучше не стало :).
                    И ваше описание, больше ясности не внесло!
                    Можно поподробнее, как приаттачить дебаггер к серверу и включить выпадание в код при возникновении исключения?
                      Цитата
                      For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client ...

                      перевод на всякий случай:
                      "Для большей информации об ошибке, или включите IncludeExceptionDetailInFaults (или из ServiceBehaviorAttribute или из <serviceDebug> ) на сервере, чтобы отправлять информацию об исключении назад клиенту ... "

                      это значит что на сервере возник тот самый "internal error", о чем тебе и сообщает твой exception на клиенте. но так как у тебя в настройках не указано (и это хорошо на самом деле с точки зрения безопасности) отсылать ошибку клиенту, то тебе на клиенте ничего и не известно что именно свалилось на сервере.

                      надеюсь это внесет больше ясности о том что происходит.

                      по поводу отладки попробуйте посмотреть msdn :)
                        С проблемой разобрался.

                        А по поводу размера при передачи больших данных, его достаточно установить на стороне клиента который обращается к сервису

                        maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"

                        и будет счастье.
                          призрак, я вообще рекомендую читать данные ридером небольшими порциями а не Dataset.Fill'ом. Так во-первых можно будет прогрес в UI добавить во-вторых докачевать дынные при обрыве связи
                            И снова таже проблема, но уже на Висте.

                            Получаю какую-то странную ошибку:
                            An error occurred while receiving the HTTP response to http://localhost:85/Service.svc. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.

                            Посмотрел в инете, у всех она лечится по разному, мне пока ничего не помогло.
                            У кого есть какие соображения?
                              Цитата призрак @
                              И снова таже проблема, но уже на Висте.

                              Проблема не та жа, ошибка ведь другая :) На Висте я первым делом запускаю студию от имени администратора (насколько я понимаю ты тестишь службу из студии), очень часто помогает.
                                При больших данных былая такая ошибка:
                                There was an error while trying to serialize parameter http://tempuri.org/:GetAddressFinderResult. The InnerException message was 'Maximum number of items that can be serialized or deserialized in an object graph is '65536'. Change the object graph or increase the MaxItemsInObjectGraph quota. '. Please see InnerException for more details.

                                Пришлось в сервисе добавить опцию, тогда всё заработало на ура :).
                                ExpandedWrap disabled
                                  <behaviors>
                                    <endpointBehaviors>
                                      <behavior name="LargeServiceBehavior">
                                        <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
                                      </behavior>
                                    </endpointBehaviors>
                                  </behaviors>
                                Сообщение отредактировано: призрак -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0698 ]   [ 16 queries used ]   [ Generated: 27.04.24, 23:57 GMT ]