美好的一天!
我有一个涉及第三方SOAP Web服务的应用程序。 Web服务调用不是很快(共同的1-3秒)。我注意到在此调用期间整个应用程序被“锁定” - IIS不提供其他用户的请求。
我知道可以在另一个线程或异步方式中调用Web服务,但是对于2-3秒的调用来说似乎是一种过度杀伤。可能有一些IIS配置来解决这个问题吗?
我在Windows Server 2003上使用IIS 6.0。应用程序是基于ASP.NET MVC 2的。
谢谢!
答案 0 :(得分:4)
为了做到这一点:你有一个ASP.NET MVC 2应用程序调用外部SOAP Web服务。您有一个用户(会话)调用一些控制器操作,该操作本身调用该服务。在此调用期间,另一个用户(不同的会话)调用相同的操作,并且您说它应该等到第一个请求完成。这有点奇怪而且不太可能。
如果您正在使用会话并且有两个并发请求(来自同一HTTP会话),则可能会发生您所描述的行为。因为会话不是线程安全的ASP.NET(并且这不是MVC的限制,所以它一直都是这样)将对来自写入它的同一会话的所有请求进行排队。这是一个blog post,它说明了这一点(在会话限制部分中)
答案 1 :(得分:0)
IIS自动对入站Web请求进行线程化。
如果您的Web服务器在请求期间没有响应并且该请求花了两三秒钟,那么听起来您的Web应用程序正在使用极高的CPU和/或内存,因此导致Web服务器停了下来。
你的申请在做什么?也许提供一些代码?