计划是使用.html扩展,并使用UrlRewriting.Net模块将它们重写为.aspx对应物.在VWD 2008中,一切都完美无瑕,但是当我尝试通过IIS7运行时,这是一个不同的故事.
当我尝试通过.html重写访问页面时,我无法再访问Page.User;它一直返回null.如果我使用它的.aspx扩展名点击页面,则会正确填充Page.User.我还应该提一下,我的母版页中有一个LoginView控制器,它有相同的症状:当通过.html扩展访问时,它会显示AnonyousTemplate;使用.aspx扩展名时,它会正确显示LoggedInTemplate.我猜这两个是相关的.
[注意:我也尝试过无扩展名的网址,他们也遇到了同样的问题]
我让它工作的唯一方法是将应用程序池切换到Classic,然后要求我为.html扩展名添加ASP.Net ddl处理程序[否则它由StaticFileHandler处理并作为404出现错误].但是,我希望我的网络应用程序能够为人们正常运行,而无需使用IIS.
所以我有几个问题:
>有没有人知道为什么Page.User总是等于null .html => .aspx改写页面?
>为什么它在VWD 2008中有效,而在IIS7中无效?
> IIS6 =>的变化IIS7可能导致了这个?
>关于变通方法的任何其他想法?
[注意:我刚试过.aspx => .aspx重写并没有出现问题.不是我想要的,但我想我应该提到它.
解决方法
< modules runAllManagedModulesForAllRequests =“true”>
搞清楚之后,我对“runAllManagedModulesForAllRequests”进行了搜索,弹出的第一件事就是Scott Guthrie’s blog,它实际上是为了这个目的而使用它.