Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 调用web服务如何导致死锁?_Asp.net_Web Services - Fatal编程技术网

Asp.net 调用web服务如何导致死锁?

Asp.net 调用web服务如何导致死锁?,asp.net,web-services,Asp.net,Web Services,令人困惑的MSDN文章讨论了从ASP.Net应用程序调用web服务如何导致死锁。我了解每个web服务调用都需要第二个线程来完成IO的部分。我理解可能并不总是有这样一个线程可用,这意味着进行web服务调用的线程将阻塞,并且在这样一个线程可用之前不会取得进展。但在我看来,确实获得IO线程的web服务调用将前进,最终这两个线程将被释放回线程池,供先前被阻止的调用使用。那么僵局从何而来?在IIS终止进程的时候,您能描述一下死锁线程在等待什么吗?本文是针对.NET 1.0/IIS 6的,并不真正适用于较新

令人困惑的MSDN文章讨论了从ASP.Net应用程序调用web服务如何导致死锁。我了解每个web服务调用都需要第二个线程来完成IO的部分。我理解可能并不总是有这样一个线程可用,这意味着进行web服务调用的线程将阻塞,并且在这样一个线程可用之前不会取得进展。但在我看来,确实获得IO线程的web服务调用将前进,最终这两个线程将被释放回线程池,供先前被阻止的调用使用。那么僵局从何而来?在IIS终止进程的时候,您能描述一下死锁线程在等待什么吗?

本文是针对.NET 1.0/IIS 6的,并不真正适用于较新版本的.NET/IIS。在较新版本的框架中,对线程池和IOCP线程数量的限制要高得多,并且您遇到它们的可能性非常非常小

过去经常发生的基本问题是ASP.NET会限制它允许任何东西使用的线程数量,并且web请求是在I/O线程上处理的,因此,传入的web请求将消耗所有可用线程,而未完成的异步调用的IO完成将在等待它们的web请求后面排队


另请参见

您确定吗?我在一个v2.0应用程序中得到了这个确切的消息,限制传出web服务调用的数量似乎可以缓解这个问题。您是否使用IIS 6?我编辑了答案-问题实际上是IIS 6,而不是.NET 1.0,我理解您描述的场景可能是一个问题,但minFreeThreads不阻止ASP.NET从池中获取所有线程吗?