Странная проблема с веб-сервисом и IIS - PullRequest
0 голосов
/ 11 мая 2010

У меня есть проблема, которая немного смущает меня, соответственно. где я понятия не имею, что это может быть.

Используемая мной система: Windows Vista, IIS 7.0, VS2008, Windows Software Factory, Entity Framework, WCF. Привязка для всех веб-сервисов - это wshttpbinding.

Я использую веб-сервис, размещенный в IIS. Этот веб-сервис использует / вызывает другой веб-сервис (также установленный в IIS). Если я использую клиент, вызывающий первый веб-сервис (который вызывает второй веб-сервис), он работает нормально примерно 4-10 раз. И затем (это повторяется, чтобы получить эту проблему, но иногда это происходит после 4, иногда после 10 времени, но это всегда происходит), Служба и IIS застревают.

Застрял означает, что этот веб-сервис больше не вызывается и генерирует время ожидания через 1 минуту. Даже увеличение времени ожидания ничего не меняет.

Если я пытаюсь перезапустить IIS, я получаю сообщение об ошибке тайм-аута (и это действительно сбивает меня с толку. Кажется, что веб-служба как-то «зависла» и блокирует перезапуск IIS). Таким образом, IIS также «застрял» (он на самом деле не застрял, но я не могу перезапустить его). Только если я убью w3wp.exe, IIS будет перезапущен, и веб-служба будет работать снова (пока я снова не вызову эту службу несколько раз).

Файлы журналов (я не эксперт в таких вещах, как ведение журналов или где найти / включить такие журналы, так сказать: я новичок), таких как http-logging, Event Viewer или WCF-Message Logging не отображаются любые намеки на источник проблемы.

У меня нет этой проблемы, когда я использую веб-службу, которая не вызывает другую службу. Вызов веб-сервиса осуществляется через Service Reference (я не использую прокси-классы), но я думаю, что это не должно быть проблемой.

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

С уважением Rene

Edit. : Я надеюсь, что моя публикация стала более читабельной: -)

1 Ответ

0 голосов
/ 11 мая 2010

вставьте System.Diagnostics.Debugger.Break() в код вашего веб-сервиса. Когда эта точка будет достигнута, вы сможете пройти через сервисную логику. Это может помочь вам диагностировать причину тупика.

Другая альтернатива - включить трассировку WCF и выполнить диагностику таким образом.

...