日安!
我有一个应用程序,其中涉及第三方SOAP网络服务。Web服务调用不是很快(通常是1-3秒)。我注意到,在此调用期间,整个应用程序都被“锁定”-- IIS不为来自其他用户的请求提供服务。
我知道可以在另一个线程或异步方式中调用web服务,但对于2-3秒的调用来说,这似乎有点过分了。是否有一些IIS配置可以解决此问题?
我在Windows Server 2003上使用IIS 6.0。应用是基于ASP.NET MVC2的。
谢谢!
发布于 2011-05-10 15:37:17
简单地说:您有一个ASP.NET MVC2应用程序调用一个外部SOAP web服务。您有一个用户(会话)调用某个控制器操作,而控制器操作本身调用服务。在此调用期间,另一个用户(不同的会话)调用相同的操作,而您的意思是它应该等到第一个请求完成。这有点奇怪,也不太可能。
如果您正在使用会话,并且有两个并发请求(来自同一个HTTP会话),则可能会发生您所描述的行为。因为会话不是线程安全的,所以ASP.NET (这不是MVC的限制,它一直是这样的)将来自同一个会话的所有写请求排入队列。这是一个说明这一点的blog post (在会话限制部分)
发布于 2011-05-10 15:34:47
IIS会自动线程处理不同的入站web请求。
如果您的web服务器在请求的持续时间内没有响应,并且该请求花费了两到三秒钟,那么听起来您的web应用程序使用了极高的cpu和/或内存,因此导致web服务器停止工作。
你的应用程序在做什么?也许可以提供一些代码?
https://stackoverflow.com/questions/5946632
复制相似问题