Web API 控制器方法执行到结束。无 HTTP 响应。挂起

Web API Controller method executes to end. No HTTP response. Hangs

我正在寻找调试此场景的方法。我已经在 Fiddler 中验证了根本没有 HTTP 响应。需要明确的是,据我所知,控制器方法不应该简单地挂起,没有例外。我已经验证了 Fiddler 中没有响应。方法 return 是一个有效的对象,通过逐步执行代码到最终的 return 语句来验证。

这与原来的问题不同,控制器方法被命中,而之前没有。原始问题中解释了这样做的原因。

更新

我现在看到了 this 行为,即使请求完成了处理程序并且 returns 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) 

事实证明这是一个崩溃的 RabbitMQ 实例与试图使用该实例的 OWin 中间件结合使用(记录异常,例如无法连接到 MQ 实例;或者更确切地说,尝试通过发送来记录它们它们到.. MQ 实例),因此以递归方式吞下异常。堆栈溢出是由于无休止地重新进入这些中间件实例造成的。日志记录中间件正在抛出异常,因为它无法记录并且异常处理中间件通过将它们发送到日志记录中间件来处理这些异常。有趣的东西。

除了重新启动以解决崩溃和无法访问的 RabbitMQ(重新启动服务还不够)问题仍然没有解决(如上所述的不同症状)除非 nuget 包 MassTransit.RabbitMQ 3.3。安装了这个确切版本带来的 2(旧版本)和依赖项(包括 RabbitMQ.Client),而不是最新版本。

我希望这会对某人有所帮助。