URL重写页面加载循环

时间:2011-05-29 06:47:55

标签: asp.net url-rewriting

我正在使用Intelligencia UrlRewriter来应用网址重写。

我使用了page1.aspx并使用了按钮的OnClick事件并对Response.Redirect进行了page2.aspx。如果我用这两个样本页面进行测试,一切正常。

然后我将一些样式和javascript应用到page2.aspx。当我点击page1.aspx上的相同按钮并在page2.aspx.cs page_load函数上放置一个断点时,我观察到page_load函数多次循环并且循环并且多次加载所有数据库调用。

应用IsPostback没有帮助。然后我删除了CSS和JS然后一切都很好。需要回答为什么这个page_load函数重复多次。

3 个答案:

答案 0 :(得分:4)

我也有这个问题。与其他人一样,它可能是由页面内的相对路径引起的。

我在重写:

domain.com/article/12345/title-here 

成为:

domain.com/article.aspx?ID=12345

问题是,有两个相对路径的图像:

  EG. images/fb.jpg
      images/tw.jpg

通过记录Request.RawUrl.ToString()中的值,我能够看到浏览器正在请求以下图像:

 domain.com/article/12345/images/fb.jpg

 domain.com/article/12345/images/tw.jpg

虽然这些文件不存在,但URL仍然符合重定向规则。

因此,将URL重写为:

domain.com/article.aspx?ID=12345

这解释了为什么我的页面加载了三次。一次为HTML,一次为每个图像。

将图像src值更改为绝对路径,问题已解决。

答案 1 :(得分:0)

您必须为CSS和JS目录设置重写规则。您的页面一次又一次地调用,因为根据css和JS文件的请求,您的页面服务。根据你的目录系统为你的CSS和JS设置重写规则。

修改 不确定可能有效

<rewrite url="^(/.+(\.gif|/.+\.png|\.jpg|\.ico|\.pdf|\.css|\.js|\.asmx|\.axd|\.flv|\.swf)(\?.+)?)$" to="$1" processing="stop" />

答案 2 :(得分:0)

使用开箱即用的ASP.Net实现也会发生页面加载循环。您可以检查并减少处理开销的方法之一是检查httpContext对象以查看当前请求的对象是什么。如果对象不是您所期望的 - 图像,.js文件,样式表等,则可以避免页面处理。