3

在查看下面的代码后,我注意到调用以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));
}

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

4

1 回答 1

0

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

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

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

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

于 2013-02-06T21:47:52.153 回答