我有一个问题,改变我在 Asp.Net 应用程序中进行 Url 重写的方式已经改变了 IIS 日志文件,看起来像这样:
/page/ 80 等等.. /page/anotherpage/ 80 等等...
至
default.aspx page=1 80 等... default.aspx page=2 80 等...
我有点困惑这是怎么发生的。是否有我缺少的设置(Win 2008,ASP.NET 2.0) 中的“runAllManagedRequests”设置也已打开。
我有一个问题,改变我在 Asp.Net 应用程序中进行 Url 重写的方式已经改变了 IIS 日志文件,看起来像这样:
/page/ 80 等等.. /page/anotherpage/ 80 等等...
至
default.aspx page=1 80 等... default.aspx page=2 80 等...
我有点困惑这是怎么发生的。是否有我缺少的设置(Win 2008,ASP.NET 2.0) 中的“runAllManagedRequests”设置也已打开。
URL 重写是否由模块完成?如果是,那么重写模块可能在日志模块之前运行。您可以更改模块在 IIS 管理器中运行的顺序。进入IIS 管理器中的模块并选择查看有序列表...;然后你可以按照你想要的顺序上下移动模块。
我不知道您使用什么方法来重写 URL,但我知道使用 Apache(以及 Windows 上的 ISAPI_Rewrite)您必须在 .htaccess 文件(或等效文件)中的每个规则中添加一个标志以告诉它记录重写的 URL,而不是原始 URL。
这个问题是重复的。
我遇到了完全相同的问题。解决此问题的一种方法是使用 Server.Transfer 而不是 Context.RewritePath。Server.Transfer 不会重新启动整个页面生命周期,因此仍会记录原始 URL。确保为“preserveForm”参数传递“true”,以便 QueryString 和 Form 集合可用于第二页。
据我所知,这将是设计使然,因为 IIS 只接收重写的 URL 而不是原始 URL,因为重写的 URL 被发送到 .Net 应用程序及其进行转换的应用程序。