Задать вопрос

Почему зависает запрос между WCF сервисами?

Привет!

Возникла проблема обмена сообщениями между двумя WCF сервисами.
Один сервис посылает "долгий" запрос и если время работы запроса превышает 260 сек, происходит зависание. Объем передаваемых данных минимален (менее 1кб), тип запроса не важен (пробовал POST и GET)
Такая проблема возникает только если сервис, который вызывает запрос с другого сервиса, работает на IIS 7.5. На IIS 7.0 такой проблемы нет.

Код вызываемого метода.
[OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
    public GA_Output GA_Calc_GET(string id)
    {
      GA_Output dtr_obj = new GA_Output();
      try
      {
        WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");

        Thread.Sleep(300000);

      }
      catch (Exception ex)
      {
        dtr_obj.ErrorResponse.SetError(ex);
      }

      return dtr_obj;
    }


Куда копать, настройки IIS или web.config ?
  • Вопрос задан
  • 2687 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
vipuhoff
@vipuhoff
Запрос выполняется более 260 секунд, возможно следует пересмотреть архитектуру системы, такие запросы лучше выполнять асинхронно и позже забирать результат. А по сути по моему опыту, чтобы минимизировать количество "глюков" самой IIS лучше чтобы версии на обоих серверах совпадали, тогда возможно не будет иметь значения какая именно версия сбоит.
Ответ написан
Комментировать
AntLogist
@AntLogist Автор вопроса
лучше чтобы версии на обоих серверах совпадали

В тот то и сила WCF что бы между разными системами связь настроить.

По асинхронным запросом я с Вами согласен, но хотелось бы простое решение, что бы устранить ошибку. В любом случае важно понимать где узкое горлышко и рассчитывать таймаут исходя из него.
Сервис, который посылает запрос, находится на VM Azure. Не может ли быть каких то таймаутов кроме IIS ?
Ответ написан
Комментировать
@redmanmale
Проверьте таймауты соединения в web.config'ах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы