Отладка HTTP 500 (внутренняя ошибка сервера) в службе WCF / промежуточная обработка

#wcf #iis-7

#wcf #iis-7

Вопрос:

У меня есть некоторые службы WCF, которые отлично работают локально; клиент может использовать их, а сервер помещает данные в базу данных, как и ожидалось. Проблема в том, что когда я развертываю их на промежуточной машине, все, что я вижу, — это ошибки HTTP 500.

Как мне начать отладку проблемы?

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

Когда я использую Fiddler, чтобы увидеть, что отправляется и каков ответ, я вижу (как и ожидалось) правильные данные запроса, и только 500 в качестве ответа — никаких дополнительных подробностей.

Я довольно хорошо знаком с WCF и IIS, так что, вероятно, это что-то очевидное; Я использовал aspnet_iisreg , развернул свой .svc файл и все встроенные библиотеки DLL / файлы из bin ; возможно, я что-то пропустил.

Я просмотрел журналы IIS, но они довольно скудные; там также нет информации об ошибке (или, может быть, я ищу не в том месте?)

(Более важным, чем решение конкретной проблемы, является выяснение того, как увидеть достаточно подробных сведений об ошибках, чтобы я мог самостоятельно справиться с проблемами.)

Редактировать: Я, конечно, сначала проверил журналы событий — и, что удивительно, не нашел никаких упоминаний об исключениях. Итак, я предполагаю, что служба, по крайней мере, вызывается, и что что-то не так в середине.

Ответ №1:

Первое место для поиска ошибок — это журнал событий на сервере. Должна быть основная информация, почему запрос не был обработан. Если это связано с WCF, вы можете включить трассировку WCF и проверить более подробную информацию в сгенерированных журналах.

Комментарии:

1. Я был очень удивлен, обнаружив, что в журнале событий ничего не было! Никаких упоминаний ни о каком . СЕТЕВЫЕ исключения.

Ответ №2:

Добавить:

 <httpErrors errorMode="Detailed"/>
  

В Web.config в разделе:

 <system.webServer>
  

И посмотрите, что происходит более подробно.

Ответ №3:

«Ошибка внутреннего сервера Http 500» может возникнуть, если срок действия пароля вашей учетной записи службы истек. Пожалуйста, убедитесь, что у вас нет никаких проблем с учетной записью службы, которая запускает пул приложений в IIS.

Ответ №4:

Оказывается, сервер возвращал 500 из-за огромного возвращаемого набора данных; WCF накладывает некоторые ограничения на размер данных (и строк), которые вы можете возвращать, для предотвращения DOS-атак. Я решил проблему, увеличив ограничения и уменьшив размер возвращаемых данных (где это применимо).