【问题标题】:Why does Context.RewritePath maintain the query string?为什么 Context.RewritePath 维护查询字符串?
【发布时间】:2013-01-22 06:04:24
【问题描述】:

查看下面的代码后,我注意到对Context.RewritePath 的调用并没有丢失查询字符串,即使它在没有查询字符串的情况下被调用。是否有任何文档解释为什么要维护查询字符串?

//URL relative path to ashx files is wrong to to path rewriting.
if (Request.Url.LocalPath.EndsWith(".ashx")) {
    Context.RewritePath(Request.Url.LocalPath
        .Substring(Request.Url.LocalPath.LastIndexOf("/") + 1));
}

编辑:我不是在问如何解决这个问题;代码行为正确。我只是要求提供有关此行为的文档。

【问题讨论】:

    标签: c# asp.net url-rewriting


    【解决方案1】:

    您实际上是在对路径进行重写,并且在大多数情况下,需要维护查询以传递到新路径。

    以一个名为“getDocumentWithEnhancements.aspx”的新文档检索页面为例,而不是旧的“getDocument.aspx”。两者都需要一个有用的参数,但您希望使用新的参数。 RewritePath 可以完成这项工作,因为它将查询传递给旧的,然后传递给新的。如果您想显示某种错误页面或其他内容,那么您可以使用重定向,或者您要重写的任何页面都将忽略查询字符串。

    为什么不希望通过查询?你到底在用这个做什么?也许它不是您需要的正确功能。

    编辑:有一个带有 3 个参数的重载函数,其中一个是查询字符串,您可以将其作为 null 传入以不使用查询字符串。

    【讨论】:

    • 我的代码没有问题;它正在做我想做的事。我只是找不到任何明确说明查询字符串得到维护的文档。如果我没有传入任何查询字符串,它将使用我现有的,所以我希望能够找到一些官方或半官方的相关文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多