IIS记录200状态,但返回500状态

时间:2013-12-09 11:42:34

标签: asp.net iis asp.net-web-api

我正在尝试诊断IIS7.5在IIS日志中显示成功(200)响应的问题,但在30秒后,“服务暂时不可用”HTML消息将返回到具有500状态的浏览器。

更多细节:

  • 我正在调用WebAPI端点来运行涉及文件和数据库条目的导入功能。
  • 导入需要40到70秒才能完成。
  • IIS 7.5日志显示请求成功完成:

    2013-12-09 10:45:17 10.177.197.244 POST / api / streamdata / ImportStream - 80 [...] Mozilla / 5.0 +(Windows + NT + 6.3; + WOW64)+ AppleWebKit / 537.36 +( KHTML,+ like + Gecko)+ Chrome / 31.0.1650.63 + Safari / 537.36 200 0 64 1150 67120

  • 导入代码还会记录导入步骤,并显示导入已成功完成。

  • 浏览器收到一个HTML页面,其中包含“Service Temporarily Unavailable”标题和30秒后的500响应代码。

  • 使用.NET4.5

我尝试了什么:

  • 使用Chrome和Firefox - 两种方式都相同。
  • 为jQuery AJAX请求添加超时。如果设置为短(30秒),我会报告实际超时。如果设置的时间很长(5分钟),我会像以前一样收到服务不可用的消息。
  • 使用Fiddler客户端,可以看到服务器正在响应500代码(而不是客户端生成的东西)。
  • 检查了各种IIS站点和应用程序池设置,但找不到解释此行为的设置。
  • 调整导入代码以错过某些步骤,并在不到30秒的时间内完成。在这种情况下,浏览器收到正常的200响应。

总而言之,代码运行正常,但是服务暂时不可用的消息会在请求30秒后返回给浏览器,即使服务器仍然乐意处理完成请求。

任何关于30秒内发生的事情以及如何解决它的想法都会感激不尽。

1 个答案:

答案 0 :(得分:2)

感谢Guntram的引导,我发现问题是负载均衡器中的30秒超时,这是HMTL错误页面的起源。

一旦Rackspace增加了超时时间,一切都会正常工作。