2011-05-10 43 views
1

美好的一天!IIS不会为其他用户的请求提供服务为什么一个用户需要拨打网络服务

我有一个应用程序涉及第三方SOAP Web服务。 Web服务调用速度不是很快(共同点为1-3秒)。我注意到,在这个调用过程中,整个应用程序被“锁定” - IIS不提供来自其他用户的请求。

我知道有可能在另一个线程或异步方式调用Web服务,但它似乎是2-3秒调用的矫枉过正。可能有一些IIS配置来解决这个问题吗?

我在Windows Server 2003上使用IIS 6.0。应用程序是基于ASP.NET MVC 2的。

谢谢!

回答

4

为了弄清楚:你有一个ASP.NET MVC 2应用程序调用外部SOAP Web服务。你有一个用户(会话)调用一些控制器本身调用该服务的动作。在此调用期间,另一个用户(不同会话)将调用相同的操作,并且您说它应该等到第一个请求完成为止。这有点奇怪,不太可能。

如果您使用会话并且您有两个并发请求(来自同一HTTP会话),则您正在描述的行为可能会发生。因为会话不是线程安全的ASP.NET(并且这不是MVC的限制,它一直是这样的)会将来自同一会话的所有请求排队写入它。这里有一个blog post这说明了这一点(在会话限制部分)

+0

谢谢,这似乎是我的问题 – artvolk 2011-05-10 08:38:04

0

IIS自动线程单独的入站Web请求。

如果您的Web服务器在请求的持续时间内没有响应,并且该请求需要两到三秒钟,那么您的Web应用程序听起来像您的Web应用程序正在使用极高的cpu和/或内存,从而导致Web服务器停下来。

你的应用程序在做什么?也许提供一些代码?

+0

不幸的是我现在没有测试用例(我真的应该缩小到只是Web服务调用)。 IIS 6是否有限制产卵线程的最大数量的选项? – artvolk 2011-05-10 07:37:10

相关问题