计划是使用.html扩展名,并使用UrlRewriting.Net模块将它们重写为它们的.aspx对应项。在VWD 2008中一切都运行得很完美,但当我尝试通过IIS7运行它时情况就不同了。
当我尝试通过.html重写访问页面时,我无法再访问Page.User;它一直返回null。如果我使用它的.aspx扩展名访问该页面,则Page.User会被正确填充。我还应该提到,我的Master Page中有一个LoginView控制器,它也遇到了相同的症状:当通过.html扩展名访问时,它显示AnonyousTemplate;当使用.aspx扩展名时,它正确地显示LoggedInTemplate。我猜两者之间有关联。
[注意:我也尝试过无扩展名的URL,它们表现出同样的问题]
我唯一使它工作的方法是将应用程序池切换为Classic,这就需要我为.html扩展名添加一个ASP.Net ddl处理程序[否则它将由StaticFileHandler处理,并显示为404错误]。然而,我希望我的Web应用程序能够在不必摆弄IIS的情况下正常运行。
所以我还有几个问题:
- 为什么Page.User始终等于null,而.html => .aspx重写页面? - 为什么它在VWD 2008中工作,但不在IIS7中工作? - 从IIS6 => IIS7有什么改变可能导致这种情况? - 其他解决方法的想法?
[注意:我刚刚尝试了一个.aspx => .aspx重写,它没有表现出这个问题。不是我想要的,但我想我应该提一下。]