Regex URL路由过程在一个网站上工作,而不是在另一个网站上。100%处理器使用率

Regex URL路由过程在一个网站上工作,而不是在另一个网站上。100%处理器使用率,regex,iis,url,process,routing,Regex,Iis,Url,Process,Routing,我认为我已经控制了URL路由,因为它在一个网站上运行良好,但发现在另一个网站上运行不好。这两个网站运行于相同的服务器、相同的IIS 6.0、相同的asp_isapi.dll 设置1:这一个运行良好: routes.MapPageRoute("Article SEO", "sid/{sid}", "~/ar.aspx", true,

我认为我已经控制了URL路由,因为它在一个网站上运行良好,但发现在另一个网站上运行不好。这两个网站运行于相同的服务器、相同的IIS 6.0、相同的asp_isapi.dll

设置1:这一个运行良好:

            routes.MapPageRoute("Article SEO",
                        "sid/{sid}",
                        "~/ar.aspx",
                        true,
                        new RouteValueDictionary { },
                        new RouteValueDictionary { { "sid", @"^([a-zA-Z\-]*)+([a-zA-Z])+(.html)$" } }

                    );
设置2:但是这一个非常类似的不太好用:

        routes.MapPageRoute("Article",
                        "page/{sid}",
                        "~/page.aspx",
                        true,
                        new RouteValueDictionary { },
                        new RouteValueDictionary { { "sid", @"^([a-zA-Z0-9\-]*)+([a-zA-Z0-9])+(.html)$" } }
                    );
在Regex Coach中测试Regex表明它们写得正确,我的意思是它们都能捕获好的或错误的字符串

我用于第二个的URL是。如果我像这样指定URL,它工作得很好

问题是,若我将.html扩展名改为.htmls或.any,那个么它将完全杀死web服务器。我有100%的进程使用率。我不明白为什么,如何,我没有这个问题与第一次安装。我可以改变它为任何我想要的,它要么显示页面,因为我有正确的格式或显示404页找不到

一些例子:

-404页,工作正常

-已接受,工作正常

-404页,工作正常

-不显示页面、挂起、100%流程使用、工作不正常

-不显示页面、挂起、100%流程使用、工作不正常

-重定向,工作正常

使用不同正则表达式检查的相同设置在同一IIS 6.0中的其他网站上运行良好。两者都使用相同的asp_isapi.dll文件

我就是不明白。我试图对page.aspx中的所有代码进行注释,以了解page.aspx中的代码是否存在问题,但这并不重要。它也只是挂在空页面上。因此,URL路由、isapi.dll或IIS肯定有问题。但在同一台IIS和同一台机器上的其他网站可以简单地工作

有什么意见吗

多谢各位


Fero

我对URL路由一无所知

但是我注意到您指定的正则表达式

@"^([a-zA-Z0-9\-]*)+([a-zA-Z0-9])+(.html)$"
在两个代码示例中看起来都是相同的,并且在两个示例中都以尾随的$结尾,表示字符串的结尾,这将禁止任何不以.html结尾的内容与该正则表达式匹配。要获取.htmls,您需要.html.*$,要获取

@"^([a-zA-Z0-9\-]*)+([a-zA-Z0-9])+\.[a-zA-Z0-9]*$"
此外,最好将“.”放在html之前,如\.html,因为reg表达式通常处理“.”表示任何单个字符,包括“.”字符


我希望这有帮助。

了解如何分析ASP.NET高CPU的根本原因,然后您将了解原因