ASP.NET应用程序在一次阻止请求后被阻止

ASP.NET应用程序在一次阻止请求后被阻止,asp.net,multithreading,iis,threadpool,Asp.net,Multithreading,Iis,Threadpool,我们有一个ASP.NET应用程序运行在带有IIS 8的Azure Windows Server 2012 R2虚拟机上。所有设置几乎都是默认设置 我们的应用程序运行在两个web应用程序上。一个用于前端(MVC),一个用于API(Web API)。两者都使用DefaultAppPool 今天,一个Web API请求有一个SQL server调用,直到超时(SQL server处于脱机状态)才返回。但有趣的是,在那之后,对我们的WebAPI项目的所有其他调用似乎都被阻止了。我们的网站上可能有大约50

我们有一个ASP.NET应用程序运行在带有IIS 8的Azure Windows Server 2012 R2虚拟机上。所有设置几乎都是默认设置

我们的应用程序运行在两个web应用程序上。一个用于前端(MVC),一个用于API(Web API)。两者都使用DefaultAppPool

今天,一个Web API请求有一个SQL server调用,直到超时(SQL server处于脱机状态)才返回。但有趣的是,在那之后,对我们的WebAPI项目的所有其他调用似乎都被阻止了。我们的网站上可能有大约50个用户,可能有5个用户同时调用了这种阻塞方法

所以我有点困惑,为什么所有其他请求也被阻止了。对MVC前端的请求未被阻止。即使它使用相同的线程池

阅读关于IIS上线程池的讨论,我认为我们应该有足够的线程来处理这样的情况


我在这里遗漏了什么?

如果没有完整的代码,很难说出原因,它太宽泛了,需要一些诊断/调试。似乎存在同步问题。一般建议:使用
async/await
避免阻塞对数据库的调用。这个问题可能类似:是的,async/await很有意义。不幸的是,我们将Azure SQL与ReliableSqlConnection一起使用,这不太支持async/await。尽管如此,我还是有点担心为什么会发生这种情况。我们应该有足够多的线程来处理这种情况。啊,阅读你发布的问题。这可能是个问题!如果没有完整的代码,很难说出原因,它太宽泛了,需要一些诊断/调试。似乎存在同步问题。一般建议:使用
async/await
避免阻塞对数据库的调用。这个问题可能类似:是的,async/await很有意义。不幸的是,我们将Azure SQL与ReliableSqlConnection一起使用,这不太支持async/await。尽管如此,我还是有点担心为什么会发生这种情况。我们应该有足够多的线程来处理这种情况。啊,阅读你发布的问题。这可能是个问题!谢谢