c# – IIS7,RewritePath和IIS日志文件
我在IIS7上运行的ASP.NET 3.5应用程序中使用Context.RewritePath().
我正在应用程序BeginRequest事件和一切工作文件. / sports的请求正确地重写为default.aspx?id = 1,依此类推. 问题是在我的IIS日志中,我看到/Default.aspx?id=1的GET请求,而不是/ sports. 这种代码在IIS6下完美工作. 使用Microsoft Rewrite模块不是一个选项,因为必须实现一些业务逻辑. 谢谢. 编辑: 似乎我的处理程序太早了,但如果我将逻辑移动到一个更晚的事件,而不是整个重写的东西不起作用(现在为时已晚,StaticFileHandler接收到我的请求). 问我周围的人,不知道没有人有这个问题吗? 编辑: 哎呀!这是我在IIS论坛上发现的: “这是因为在集成模式下,IIS和asp.net共享一个通用管道,而现在可以看到IIS中的RewritePath,而在IIS6中,IIS甚至没有被IIS看到 – 您可以通过使用经典模式来解决这个问题. IIS6“. 最后更新:请查看my answer below,在生产环境超过一年后,我已经更新了结果. 解决方法
经过一番研究,我终于找到了解决这个问题的办法.
我已经用新的(在ASP.NET 3.5中引入)Context.Server.TransferRequest()方法替换了对Context.RewritePath()方法的调用. 现在看来很明显,但是IIS Core团队的高级开发工程师并没有想到这一点. 我已经测试了它的会话,身份验证,回发,querystring,…问题,没有发现. Tommorow我会将更改部署到一个非常高的交通网站,我们很快就会知道它是如何工作的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |