【问题标题】:URL rewriting page load loopsURL 重写页面加载循环
【发布时间】:2012-03-07 05:07:10
【问题描述】:

我正在使用Intelligencia UrlRewriter 应用 URL 重写。

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

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

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

【问题讨论】:

  • 你为JS和css文件夹设置urlrewrite规则了吗?

标签: asp.net url-rewriting


【解决方案1】:

我也有这个问题。就像其他人提到的那样,这可能是由页面内的相对路径引起的。

我在重写:

domain.com/article/12345/title-here 

变成:

domain.com/article.aspx?ID=12345

问题是,有 2 张图片具有相对路径:

  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

这解释了为什么我的页面加载了 3 次。 HTML 一次,每张图片一次。

把图片src值改成绝对路径,问题就解决了。

【讨论】:

    【解决方案2】:

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

    编辑 不确定是否可以工作

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

    【讨论】:

    • 我所有的 css 文件都在 Styles 文件夹下,我所有的 js 文件都在 js 文件夹下,这两个文件夹都在主目录下......所以你能指导我在这种情况下如何编写 REWRITERULE 作为 iam对 url 重写完全陌生,在 REWRITERULES 的这一点上完全迷失了........尝试但无法解决我的问题
    • 我的应用程序使用 ASP .NET 3.5 C#
    • 感谢 Prakash 先生真正拯救了我的一天......它现在工作,现在我什至理解了如何处理的逻辑............你也可以建议几个最佳链接获得 URL 重写深入的知识......对于 asp.net 3.5 C# 应用程序......
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 2011-12-02
      • 2014-07-20
      • 2017-10-01
      • 2014-01-09
      • 2023-03-11
      • 1970-01-01
      • 2020-03-19
      相关资源
      最近更新 更多