2

我有一个相当详细的问题,希望有人能提供帮助。基本上,我有一个托管在 IIS7 上的 .NET 4.0 网站,其中有一些需要重写 URL 的页面。为了实现这些功能,我在 global.asax 中添加了一个方法,该方法将无扩展名的 URL 映射到其正确的 ASPX 页面,然后执行 context.RewritePath 以显示正确的页面。

最初,我从 application_BeginRequest 调用此方法。但是,我们在调用 Session_Start 时会发生一些业务必要的日志记录,而且自从在 application_BeginRequest 中实现 URL 重写以来,这种日志记录似乎并不总是发生 - 基本上,每个会话都会记录在数据库中,并且在初始部署之后URL 重写后,我们的会话日志减少了大约 20%,应用程序日志中没有相应的错误。同时,我们的 IIS 日志似乎显示了相对不变的流量,所以在我看来,会话似乎没有正确实例化。

作为此问题的解决方法,我将 URL 重写从 application_BeginRequest 移至 application_AcquireRequestState,以便在我(大部分)确定会话已启动之前,此代码不会触发。这适用于我的本地开发环境和我们的登台服务器(Windows Server 2008 - IIS 7 - 安装了 .NET 4.5 框架)。在生产环境(Windows Server 2008 - IIS 7 - .NET 4.5 Framework)中,尝试浏览要重写的无扩展名 URL 时出现 404 错误。

我完全被难住了 - 我已经验证我正在使用集成应用程序池,我的 web.config 具有“runAllManagedModulesForAllRequests=true”属性,我的 IIS 功能包括 HTTP 重定向和静态文件压缩,但似乎没有任何工作. 我发现了一个使用 Classic 应用程序池的 hack,并创建额外的脚本映射处理程序来处理没有扩展名的通配符 URL,但我犹豫是否将其投入生产。

您能提供的任何帮助将不胜感激。谢谢!

4

1 回答 1

0

我将专注于为什么会话日志下降了 20%。你确定没有流量下降吗?您是否为使用旧 .aspx 网址访问您网站的人使用重定向?也许您收到了更多不会触发 Session_Start 的 404 流量?谷歌分析是否确认 UrlRewite 实施后流量保持正常水平?您还可以使用IIS Log Parser过滤掉静态文件并从日志文件中查询 200 与 404 以更好地了解实际流量。

于 2013-04-17T03:38:55.633 回答