Asp.net 调试请求是';卡住';在IIS工作进程中

Asp.net 调试请求是';卡住';在IIS工作进程中,asp.net,iis,iis-6,url-rewrite-module,w3wp,Asp.net,Iis,Iis 6,Url Rewrite Module,W3wp,在TL的情况下;DR-我基本上需要关于哪些工具可用于调试发送给IIS的请求以及哪些请求在模块内暂停的指导。 我现在有一个旧的ASP 2.0应用程序的问题,它会周期性地变得不可用,而回收应用程序池(尽管可能很糟糕)并不能让它100%的恢复 因此,首先,它呈现为进入应用程序池的请求,并在RewriteModule中处于“BeginRequest”状态 这不是一个特定的请求,它总是第一个遇到这个问题。这个问题也无法轻易地重新创建 最终请求加入此待办事项列表,当其深度达到70+时,应用程序池无法响应WA

在TL的情况下;DR-我基本上需要关于哪些工具可用于调试发送给IIS的请求以及哪些请求在模块内暂停的指导。

我现在有一个旧的ASP 2.0应用程序的问题,它会周期性地变得不可用,而回收应用程序池(尽管可能很糟糕)并不能让它100%的恢复

因此,首先,它呈现为进入应用程序池的请求,并在RewriteModule中处于“BeginRequest”状态

这不是一个特定的请求,它总是第一个遇到这个问题。这个问题也无法轻易地重新创建

最终请求加入此待办事项列表,当其深度达到70+时,应用程序池无法响应WAS的ping,并强制回收。可以预见,它不会按时停止,旧的应用程序池将被迫停止。当新的应用程序池出现时,它要么工作正常,要么立即遇到与传出应用程序相同的问题,请求开始排队

在这样的问题上,所有的官方指导都集中在研究重写模块可能阻塞的原因上,这是可以理解的

  • 我已经验证了我的重定向,虽然很复杂,但语法没有明显的问题(XML验证)

    • 同样,在inetmgr中,加载URL重写模块似乎可以很好地解析配置并直观地显示它们

    • 权限之类的基本功能都可以

当应用程序正常工作时,我还使用了失败的请求跟踪/日志记录来查看请求管道中的示例URL,该URL已暂停,我可以确认没有出现循环逻辑或奇怪的错误-请求似乎得到了很好的处理。这也向我展示了rewritemodule被调用的高度,从这一点上我真的看不出这个问题如何与应用程序相关,因为此时没有调用.NET

令人烦恼的是,当应用程序池遇到这个问题时,我可以抛出一些请求,这些请求只是暂停失败的请求跟踪是不好的,因为你实际上需要一个请求才能到达它的旅程的终点,否则它会拒绝注销任何内容

我求助于获取受影响w3wp.exe的进程转储,并通过DebugDiag运行它们。不幸的是,我看到的唯一一件事是线程在访问重写模块时是开放的,但对于它们所停留的内容却知之甚少

和其他人一样,我试图将问题的开始追溯到最近安装的补丁或代码更改,但没有任何匹配项。同样,这也发生在3x服务器上,否则我会尝试重新安装重写模块。同一服务器上调用重写模块的其他站点不受影响


有没有其他人遇到过这样的问题?在这种情况下,网络上的信息似乎相对较少。也许您可以推荐我可以适应此场景的针对IIS的进一步调试工具或方法?这有点像是在向更熟悉Apache/Nginx的人求救——很抱歉写了这么长的文章。

转储分析是一项昂贵的服务,所以即使在StackOverflow上也不要指望有什么神奇的东西。打开一个微软的支持案例,你会得到你想要的。嗨,莱克斯,我要走这条路,但我觉得值得一问,因为“通用”调试工具在很多情况下都不适用。我想一定是因为这个原因我错过了什么,所以问这个问题是有道理的。