【问题标题】:Possible bug/issue in ASP.NET 3.5 related to Request.RawUrl propertyASP.NET 3.5 中与 Request.RawUrl 属性相关的可能错误/问题
【发布时间】:2011-04-06 18:58:40
【问题描述】:

我在这里发布了一个使用 ASP.NET 3.5 的 301 重定向查询:

Redirecting default.aspx to root virtual directory

根据我得到的回复,我意识到 ASP.NET 的 Request.RawUrl 方法中可能存在一个错误,该错误在子目录中使用时无法返回实际的原始 url(没有 /default.aspx) ,即 /default.aspx 页面位于子目录中。

有人可以解释一下这个可能的错误吗?

谢谢,

阿西夫

【问题讨论】:

    标签: asp.net redirect


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      如果您怀疑这是一个错误,那么可以去Microsoft Connect,在那里您可以直接与微软报告和讨论错误。

      编辑:我能够根据您的 cmets 重现外观。

      但是,我无法重现无限循环。我将代码注入到 Web 应用程序的 Global.asax Application_BeginRequest 处理程序中,并获得了单个重定向的预期行为。

      还有其他更好的 IMO 选项来处理全局重定向规则。在 IIS7 上,我使用 URL Rewrite 模块在 IIS 中配置重写规则。您可以阅读更多信息并在此处下载:http://www.iis.net/download/urlrewrite。此类解决方案的吸引力在于您可以自定义和更新重写规则,而无需重新编译应用程序。

      编辑:我能够在没有 default.aspx(重定向后)的情况下检索原始 URL:

      Request.ServerVariables["CACHE_URL"]
      

      值得一试。

      【讨论】:

      • 我知道 rewrite 模块,但由于其他原因我不能使用它们。您是否在子目录(虚拟目录)下对其进行了测试?只需将您的项目发布为其中包含 default.aspx 的虚拟目录(比如说 site.com/app/),当有人键入 site.com/app/ 时,您应该能够实现 301 重定向到 site.com/app默认.aspx。如果那对你有用,请告诉我。 (我使用 asp.net 3.5 和 iis7)。谢谢
      【解决方案3】:

      您是否查看过虚拟目录的 IIS 设置?如果将默认文档设置为 default.aspx,那么这将解释您遇到的无限循环。您告诉网站重定向到没有“default.aspx”的虚拟目录,IIS 在下一个请求中检测到这一点并将其放回 ad infinitum

      右键单击您的虚拟目录,选择“属性”,然后选择“文档”选项卡。如果 default.aspx 在列表中,那么这就是您将得到的。请求的 Url 将作为 /folder/default.aspx 而不是 /folder/ 传递给 ASP.NET 工作进程

      这不是错误。如果 IIS 不这样做,您会收到一个找不到页面的错误。

      听起来你需要调查 URL 重写http://msdn.microsoft.com/en-us/library/ms972974.aspx

      【讨论】:

      • 感谢您的回复丹尼尔,但我有点困惑。如果这是无限重定向的原因,那么当没有虚拟目录并且我在根级别发布项目(作为 IIS 中的网站而不是子目录)时,为什么不会发生这种情况。即使该网站设置了 default.aspx,上述用于删除 default.aspx 的 301 重定向代码仍然可以完全按预期工作。有什么想法吗?
      • 嗯。你让我到了那里。我将不得不做更多的挖掘工作。
      • @Asif - 至少在使用 Cassini 的情况下,它不会在根级别发生的原因是 RawUrl 在重定向后附加了一个问号。
      • 这是一个很好的观点。我没看到,@kbrimington。谢谢。我建议您将其单独添加为 anwser。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多