【问题标题】:Web API Controller method executes to end. No HTTP response. HangsWeb API 控制器方法执行结束。没有 HTTP 响应。挂起
【发布时间】:2017-05-18 02:28:39
【问题描述】:

我正在寻找一种方法来调试这种情况。我已经在 Fiddler 中验证了根本没有 HTTP 响应。需要明确的是,据我了解,控制器方法不应该简单地挂起,也不例外。我已经验证了 Fiddler 缺乏响应。该方法返回一个有效对象,通过单步执行代码到最终的返回语句进行验证。

这与原始问题的不同之处在于控制器方法被命中,而不是之前。其原因在原始问题中进行了解释。 ASP.NET Web Api. Controller not hit. No response at all. Approaches to diagnose?

更新

我现在看到 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) 

【问题讨论】:

  • 如果您已确认正在执行该方法以响应 Fiddler 请求,但 fiddler 根本没有得到任何预期响应,这听起来像是某些东西(防火墙?)正在阻止响应到达预期的客户。您可以尝试在服务器上使用某种数据包嗅探器来验证是否正在发送响应。
  • @Theo,没有回复
  • 服务器事件查看器中是否有任何指示问题的内容?
  • 服务器事件查看器中没有任何指示问题
  • 这是一个严重的问题。查看我的编辑 - 请重新考虑您的反对意见。

标签: asp.net asp.net-web-api rabbitmq owin stack-overflow


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    相关资源
    最近更新 更多