C# IIS在使用HTTP连接时关闭连接并随机抛出500:保持活动状态

C# IIS在使用HTTP连接时关闭连接并随机抛出500:保持活动状态,c#,asp.net,http,iis,asp.net-web-api,C#,Asp.net,Http,Iis,Asp.net Web Api,我们有10个批处理作业,它们调用驻留在IIS上的内部API。在对所有10个批处理作业进行负载测试和调用WebAPI post方法时,我们将从服务器随机获得500个响应。若我们在处理几百条消息之后提供10000条消息,我们将注意到一行中有10条消息以500条失败。然后它又开始工作,我们暂时不会注意到另一个错误 经过一些研究,我们意识到正在发生的是IIS正在关闭客户端和服务器之间的连接,请求的响应是500(内部服务器错误)。连接:每条消息都提供了Keep Alive请求头。我们遇到的问题是,不知道是

我们有10个批处理作业,它们调用驻留在IIS上的内部API。在对所有10个批处理作业进行负载测试和调用WebAPI post方法时,我们将从服务器随机获得500个响应。若我们在处理几百条消息之后提供10000条消息,我们将注意到一行中有10条消息以500条失败。然后它又开始工作,我们暂时不会注意到另一个错误

经过一些研究,我们意识到正在发生的是IIS正在关闭客户端和服务器之间的连接,请求的响应是500(内部服务器错误)。连接:每条消息都提供了Keep Alive请求头。我们遇到的问题是,不知道是否是由于API出现意外错误或服务器关闭了连接而导致500的出现

我的问题是,有没有一种方法可以确定500是不是由服务器关闭的连接引起的


IIS是否应该抛出500,或者是否可以将IIS配置为在连接关闭时发送其他类型的响应?由于消息本身确实没有问题,因此,如果出现此连接问题,我们希望重新处理消息,而不是在认为是消息导致API失败的情况下响应客户端

500或500内部服务器错误在我看来是有史以来最严重的错误,它只是一个一般性错误,意味着“你的服务器有问题,我们不知道它是什么,但它是错误的。”有时它与cookie、网关超时或许多其他原因有关。但有一件事是肯定的。它是服务器。从查看.htaccess开始,确保没有问题。之后,我将检查您的API,确保您没有重复项或代码错误。@Mokey我将查看.htaaccess-我知道请求甚至没有发送到API,我们已经设置了日志,在发生错误时我们甚至没有看到请求。这就是它导致IIS和连接问题的原因。这不是很有描述性,很难确定错误发生的位置和原因。其他人是怎么处理的?Web浏览器?我不擅长API,但我知道我总是用IIS手动检查所有内容。使用returns和类似Postman的东西:这样的东西会让你头疼。在Windows服务器上,在请求发送到IIS之前,它首先被HTTP.sys使用。检查该日志(与iis日志不同),并查看是否从中生成错误。来自HTTP.sys的错误消息可能有更好的信息。此外,如果应用程序池队列被淹没(请检查队列长度),HTTP.sys将返回503。不确定UNIX是否使用了HTTP.sys。这都是在windows server上完成的-对于队列长度,如果超过预期值,我会得到503。感谢您提供的信息,HTTP.sys日志在哪里?我很确定这是连接丢失错误,我只是不知道如何在应用程序中捕获这些错误并重新处理消息,因为它只是一个500,其他什么都没有。