#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-атак. Я решил проблему, увеличив ограничения и уменьшив размер возвращаемых данных (где это применимо).