Веб-сервис WCF - увеличить время ожидания - PullRequest
0 голосов
/ 23 февраля 2011

Я получаю это:

Произошла ошибка при получении ответа HTTP на http://localhost:8732/Design_Time_Addresses/PersistencyService/Service1/. Это может быть связано с тем, что привязка конечной точки службы не использует протокол HTTP. Это также может быть связано с тем, что сервер прерывает контекст HTTP-запроса (возможно, из-за закрытия службы). Подробнее смотрите в журналах сервера.

Почему я это понимаю? Я предполагаю, что это потому, что метод занимает около 1 минуты. Как можно отключить любое ограничение по времени?

Я получаю это при запуске в VS проекта формы Windows, который использует службу WCF в том же решении

Моя конфигурация WCF: редактирование:

<system.serviceModel>
   <bindings>
      <wsHttpBinding>
        <binding name="LongRunning" sendTimeout="00:10:00" />
      </wsHttpBinding>
   </bindings>
   <client>
      <endpoint name="Default"          
                address="http://localhost:8732/Design_Time_Addresses/PersistencyService/Service1/"         
                binding="wsHttpBinding"                    
                bindingConfiguration="LongRunning"
                contract="PersistencyService.IService1" />
   </client>
   <services>
      <service name="PersistencyService.Service1">
         <endpoint 
             address="" 
             binding="wsHttpBinding"  bindingConfiguration=""
             contract="PersistencyService.IService1" >
             <identity>
                <dns value="localhost" />
             </identity>
         </endpoint>
         <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
         <host>
            <baseAddresses>
               <add baseAddress="http://localhost:8732/Design_Time_Addresses/PersistencyService/Service1/" />
            </baseAddresses>
         </host>
      </service>
   </services>
   <behaviors>
      <serviceBehaviors>
         <behavior>
            <serviceMetadata httpGetEnabled="True"/>
            <serviceDebug includeExceptionDetailInFaults="False"/>
        </behavior>
      </serviceBehaviors>
   </behaviors>
</system.serviceModel>

Сообщение об исключении: Существующее соединение было принудительно закрыто удаленным хостом. Я также должен добавить, что я получаю около 70 МБ данных от службы

1 Ответ

6 голосов
/ 23 февраля 2011

На стороне клиента вам нужно добавить некоторые настройки в app.config:

<system.serviceModel>
   <bindings>
      <wsHttpBinding>
         <binding name="LongRunning" sendTimeout="00:10:00" />
      </wsHttpBinding>
   </bindings>
   <client>
       <endpoint name="Default"
           address="....."
           binding="wsHttpBinding"
           bindingConfiguration="LongRunning"
           contract="IYourServiceContract" />
   </client>
</system.serviceModel>

Вы не дали нам многого, чтобы продолжить - без конфигурации, ничего .... так что мне осталось только угадать, какие настройки у вас могут быть.

По сути, вам нужно определить конфигурацию привязки для типа используемой привязки, и вам нужно увеличить атрибут sendTimeout в этой конфигурации привязки (здесь в моем примере: 10 минут ). Вы не можете полностью отключить тайм-аут - вы можете увеличить его, но не выключить.

Затем ваша клиентская конфигурация должна сделать ссылку на указанную вами конфигурацию привязки, указав атрибут bindingConfiguration="...." в конфигурации <endpoint> и используя то же имя для конфигурации привязки, что и при ее определении. .

Может быть, этого достаточно, но, возможно, вам также потребуется увеличить некоторые тайм-ауты на стороне server . Попробуйте сначала - если это не работает, вернитесь и спросите еще раз - и пожалуйста , в следующий раз: предоставьте нам более полезную информацию, такую ​​как ваш код и конфигурацию!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...