微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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我会将更改部署到一个非常高的交通网站,我们很快就会知道它是如何工作的.

原文地址:https://www.jb51.cc/csharp/97582.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐