Мое приложение имеет 50 конечных точек службы (например, /mysite/myService.svc). Он размещен в IIS. Периодически (один раз в два или три дня) служба перестает отвечать на запросы. Это никогда не тот сервис, который зависает. Пока служба зависла, некоторые другие службы работают нормально, а другие также зависают.
Все клиенты (с разных компьютеров) получают эту ошибку:
ServiceModel.CommunicationException
Message: An error occurred while receiving the HTTP response to
https://server/mysite/myservice1.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.
Сервер не вызывает никаких исключений, когда клиент пытается вызвать зависшую службу. Все, что у меня есть, это ошибка на стороне клиента.
Мне нужно вручную перезапустить пул приложений, чтобы решить эту проблему.
Вы знаете, в чем может быть причина? Как я могу исследовать эту проблему? Я готов взять дамп памяти рабочего процесса, когда служба зависла, но я не знаю, что искать в дампе.
Обновление (13 августа 2009 г.): Я почти исключил идею, что на сервере закончились соединения (см. Комментарий в ответе Шираз Бхайджи). У меня может быть новое преимущество: я регистрирую все исключения на стороне сервера в файле журнала. Таким образом, теоретически, когда это происходит на клиенте, на сервере не возникает никаких исключений; в противном случае у меня было бы доказательство этого в моих журналах. Но что, если ошибка возникает на сервере, но происходит на низком уровне, где исключения не направляются в мой код обработки исключений? Я разместил этот вопрос о сценариях, где исключения низкого уровня не могут быть обработаны. Я буду информировать вас о ходе моего расследования.