2017-01-03 1 views
-2

Я ищу подход для отладки этого сценария. Я проверил в Fiddler, что HTTP-ответа вообще нет. Чтобы быть ясным, как я понимаю, метод контроллера не должен просто зависать, исключений нет. Я проверял отсутствие ответа в Fiddler. Метод возвращает действительный объект, проверенный, перейдя через код в конечный оператор return.Метод API веб-API завершается. Нет ответа HTTP. Hangs

Это отличается от исходного вопроса тем, что метод контроллера поражен, а не раньше. Причина этого объясняется в исходном вопросе. ASP.NET Web Api. Controller not hit. No response at all. Approaches to diagnose?

UPDATE

Я сейчас видим this поведение, даже если запрос завершает обработчик и возвращает 200

ExtensionlessUrlHandler and "Recursion too deep; the stack overflowed"

1506. -GENERAL_REQUEST_END 


BytesSent 
6069 

BytesReceived 
436 

HttpStatus 
200 

HttpSubStatus 
0 

С ближе к концу

ErrorDescription 
Internal Server Error 


0 ms 

Warning 
1170. -MODULE_SET_RESPONSE_ERROR_STATUS 


ModuleName 
ManagedPipelineHandler 

Notification 
EXECUTE_REQUEST_HANDLER 

HttpStatus 
500 

HttpReason 
Internal Server Error 

HttpSubStatus 
0 

ErrorCode 
Recursion too deep; the stack overflowed. 
(0x800703e9) 
+0

Если вы подтвердили, что метод выполняется в ответ на запрос Fiddler, но скрипач вообще не получает ожидаемого ответа, это похоже на что-то (брандмауэр?), Препятствует достижению ответа от предполагаемого клиента. Вы можете попробовать какой-то сниффер пакетов на сервере, чтобы убедиться, что ответ отправлен. – Theo

+0

@Theo, ответ не получен – Tom

+0

Что-нибудь в средстве просмотра событий сервера, указывающее проблемы? – Theo

ответ

0

Это оказалось разбитым экземпляром RabbitMQ в сочетании с промежуточным программным обеспечением OWin, которое пыталось использовать этот экземпляр (для регистрации исключений, таких как невозможность подключения к экземпляру MQ; или, скорее, попытаться их зарегистрировать, отправив их в экземпляр MQ) и, таким образом, рекурсивным образом перехватывает исключения. Переполнение стека было вызвано повторным входом в эти экземпляры промежуточного программного обеспечения бесконечно. Второе промежуточное программное обеспечение для журналов выбрасывало исключения, поскольку оно не могло регистрироваться, а промежуточное программное обеспечение обработки исключений обрабатывало эти исключения, отправляя их в промежуточное программное обеспечение для ведения журнала. Интересный материал.

В дополнение к повторной загрузке, чтобы вылечить аварийный и недоступный RabbitMQ (перезапуск службы был недостаточным), проблема все еще не была устранена (различные симптомы, как описано выше), если пакет nuget MassTransit.RabbitMQ 3.3.2 (старый версия) и зависимостей (включая RabbitMQ.Client), которые эта точная версия приносит с собой, были установлены, а не последние версии.

Надеюсь, это поможет кому-то.

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