c# – IIS7,RewritePath和IIS日志文件

前端之家收集整理的这篇文章主要介绍了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我会将更改部署到一个非常高的交通网站,我们很快就会知道它是如何工作的.

猜你在找的C#相关文章