我正在使用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
函数重复多次。
答案 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文件,样式表等,则可以避免页面处理。