我在 IIS7 上运行的 ASP.NET 3.5 应用程序中使用 Context.RewritePath()。
我在应用程序 BeginRequest 事件中执行此操作,并且一切正常文件。
/sports 的请求被正确地重写为 default.aspx?id=1,依此类推。
问题是在我的 IIS 日志中,我看到 /Default.aspx?id=1 的 GET 请求,而不是 /sports 的 GET 请求。
这种代码在 IIS6 下完美运行。
由于必须实现一些业务逻辑,因此不能选择使用 Microsoft Rewrite 模块。
谢谢。
编辑:
似乎我的处理程序在管道中为时过早,但是如果我将逻辑移到以后的事件中,那么整个重写的事情就不起作用了(为时已晚,StaticFileHandler 接受了我的请求)。
我用谷歌搜索和谷歌搜索,四处询问,不敢相信没有人有这个问题?
编辑:
哎呀!这是我在 IIS 论坛上找到的内容:
“这是因为在集成模式下,IIS 和 asp.net 共享一个公共管道,并且现在 IIS 可以看到 RewritePath,而在 IIS6 中,IIS 甚至都看不到它 - 您可以使用经典模式来解决这个问题,其行为类似于IIS6。”
最终更新:请看下面我的回答,我在生产环境中使用了一年多后更新了结果。