我已经使用UrlRewriting.Net模块几年了,在Windows XP和Windows 2003中没有任何问题。我最近将我的家用电脑升级到Windows 7并开始开发一个新网站。UrlRewriting.Net模块+ IIS7等于Page.User == null?
该计划是使用.html扩展名,并使用UrlRewriting.Net模块将它们重写到它们的.aspx对应文件中。一切在VWD 2008中完美地工作,但是当我尝试通过IIS7运行时,它是一个不同的故事。
当我尝试通过.html重写访问页面时,我无法再访问Page.User;它一直返回null。如果我使用它的.aspx扩展名访问该页面,则Page.User将正确填充。我还应该提到,我的母版页中有一个LoginView控制器,它受到相同的症状:通过.html扩展访问时,它显示AnonyousTemplate;使用.aspx扩展名时,它会正确显示LoggedInTemplate。我猜这两个是相关的。
[注:我也尝试扩展名的网址,他们表现出了同样的问题]
我已经得到了它的工作的唯一办法是切换应用程序池为经典,然后要求我补充一个用于.html扩展名的ASP.Net ddl处理程序[否则它由StaticFileHandler处理并作为404错误出现]。不过,我希望我的网络应用程序能够正常运行而不必使用IIS。
所以我留下了几个问题:
- 没有人有想法,为什么总是Page.User等于null查找.html =>的.aspx页面改写?
- 它为什么在VWD 2008中工作,但不是IIS7?
- 什么从IIS6 => IIS7可能导致此?
- 有关变通办法的其他想法?
[注意:我只是尝试了一个.aspx => .aspx重写,它没有表现出问题。不是我想要的,但我想我应该提到它。]
是的IIS内的集成模式是IIS6和7之间的主要区别。您可能想要查看将IIS6从IIS6移动到IIS7(http://msdn.microsoft.com/zh-cn/library /bb515251.aspx)。 正如您发现的那样,VWD 2008通过.NET运行所有功能,因此它可以在集成模式下有效运行,并且runAllManagedModulesForAllRequests设置为true。 – krohrbaugh 2010-01-08 16:12:41
谢谢山姆。你在现场。它确实解决了这个问题。我会投你的答案,但没有足够的声誉:( – Heinnge 2011-01-11 18:31:34