Web services 强制asmx web服务一次处理一个请求

Web services 强制asmx web服务一次处理一个请求,web-services,asmx,throttling,Web Services,Asmx,Throttling,我正在调试一个接收“突发”请求的ASMXWeb服务。i、 例如,web服务可能会在大约1或2秒内收到100个异步请求。处理每个请求似乎需要大约一秒钟的时间(这是意料之中的,我对这一性能没有意见)。然而,重要的是,每个请求都是按顺序处理的,不会发生并行处理。我不希望由于web服务调用的外部组件而进行任何并发请求处理。有没有办法强制web服务只按顺序处理每个响应 我已经在machine.config中看到了maxconnection属性,但这似乎只适用于出站连接,因为我希望限制传入连接 请注意,此时

我正在调试一个接收“突发”请求的ASMXWeb服务。i、 例如,web服务可能会在大约1或2秒内收到100个异步请求。处理每个请求似乎需要大约一秒钟的时间(这是意料之中的,我对这一性能没有意见)。然而,重要的是,每个请求都是按顺序处理的,不会发生并行处理。我不希望由于web服务调用的外部组件而进行任何并发请求处理。有没有办法强制web服务只按顺序处理每个响应

我已经在machine.config中看到了maxconnection属性,但这似乎只适用于出站连接,因为我希望限制传入连接

请注意,此时此刻,重构到WCF不是一个选项


我们正在Win2003上使用IIS6

也许您应该在内部将请求排队,然后逐个处理它们


它可能会导致客户端轮询结果(如果他们需要的话),但您会得到您想要的顺序管道…

在IIS7中,您可以设置允许连接到网站的限制。你能使用IIS7吗?

我过去所做的就是简单地在我使用的外部资源的任何访问周围放置一个lock语句。在我的例子中,这是一段声称是线程安全的非托管代码,但如果一次从多个线程访问,它实际上会破坏C运行时库堆。

所有请求都是来自客户端的同步请求。我曾经考虑过在web服务端创建一个队列类,但我认为IIS必须有一些内部缓冲区来缓存请求,所以我不想(非常想)重新发明轮子。我建议查看msmq并通过工作线程/进程处理队列。当最大连接数处于活动状态时,到达的传入连接会发生什么情况?他们会被IIS排队还是被拒绝?我会检查是否允许我们使用IIS7。根据我的发现,额外的请求在http.sys队列中排队,直到有空闲连接。但是,这会使客户端应用程序超时。好吧,这听起来正是我想要的行为。这种行为是与IIS 7相关还是也发生在IIS 6中?我可以控制客户端超时,因此这不是问题。顺便问一下,你在哪里找到这些信息的?我不确定IIS6的情况,我没有任何可以查的信息。怎么用?我第一次看IIS是因为我记得我见过。谷歌给了我一个答案,关于超限连接会发生什么。@Alex:这些答案对你有帮助吗?你应该投票给那些有帮助的人,这样以后阅读这个问题的人就会知道哪些是有帮助的答案。我正在寻找有关IIS6在这种情况下的行为(或可能被迫行为)的详细信息。在这种情况下,编程解决方案对我没有好处,我无法升级到IIS 7。IIS与问题无关。除了将请求传递给ASP.NET之外,它不参与。因此,鉴于改变IIS6的行为无法解决您的问题,这些答案中的一个是否可能解决您的问题?