2010-05-11 2 views
0

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

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

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

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

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

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

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

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

С уважением Рене

Edit. : Я надеюсь, что мои сообщения более читабельны сейчас :-)

+0

Пункты могут помочь вам получить больше ответов - трудно прочитать ваш вопрос. Что такое код в вашем веб-сервисе? Что делает другой веб-сервис? Можете ли вы опубликовать код? – Paddy

+0

Код запрашивает базу данных для получения некоторой информации. Это простой DB-Read (выполняется с Linq), который возвращает строку. Поэтому в кодексе ничего сложного не сделано. Я тестировал его также с более сложным кодом (более сложным означает, что возвращено больше данных), но там у меня также есть эта проблема. Единственным шагом в решении, которое я мог бы попробовать (с моим очень ограниченным знанием по всей теме), является изменение привязки с wshttpbinding к basichttpbinding (также я должен использовать wshttpbinding). – Rene

ответ

0

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

Другой вариант - turn on WCF Tracing, и диагностируйте этот путь.

Смежные вопросы