【发布时间】:2011-01-02 18:45:38
【问题描述】:
我已经使用 UrlRewriting.Net 模块几年了,在 Windows XP 和 Windows 2003 中没有任何问题。我最近刚刚将我的家用 PC 升级到 Windows 7 并开始开发一个新网站。
计划是使用 .html 扩展名并使用 UrlRewriting.Net 模块将它们重写为对应的 .aspx。 一切都在 VWD 2008 中完美运行,但是当我尝试通过 IIS7 运行它时,情况就不同了。
当我尝试通过 .html 重写访问页面时,我无法再访问 Page.User;它一直返回null。如果我使用它的 .aspx 扩展名点击该页面,则 Page.User 已正确填充。我还应该提到,我的母版页中有一个 LoginView 控制器,它也有同样的症状:当通过 .html 扩展名访问时,它会显示 AnonyousTemplate;使用 .aspx 扩展名时,它会正确显示 LoggedInTemplate。我猜这两者是相关的。
[注意:我也尝试过无扩展名的 URL,但它们也出现了同样的问题]
我让它工作的唯一方法是将应用程序池切换到 Classic,然后需要我为 .html 扩展名添加一个 ASP.Net ddl 处理程序 [否则它由 StaticFileHandler 处理并出现作为 404 错误]。但是,我希望我的 Web 应用程序能够正常运行,而不必摆弄 IIS。
所以我有几个问题:
- 有人知道为什么 Page.User 对于 .html => .aspx 重写的页面总是等于 null 吗?
- 为什么它在 VWD 2008 中有效,但在 IIS7 中无效?
- 从 IIS6 => IIS7 发生的哪些变化可能导致了这种情况?
- 对解决方法还有其他想法吗?
[注意:我刚刚尝试了 .aspx => .aspx 重写,但没有出现问题。不是我真正想要的,但我想我应该提到它。]
【问题讨论】:
标签: asp.net iis-7 windows-7 url-rewriting forms-authentication