UrlRewriting.Net模块+ IIS7等于Page.User == null?

Sam*_*Sam 5 asp.net iis-7 forms-authentication url-rewriting windows-7

我已经使用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.我猜这两个是相关的.

[注意:我也尝试过无扩展名的网址,他们也遇到了同样的问题]

我让它工作的唯一方法是将应用程序池切换到Classic,然后要求我为.html扩展名添加ASP.Net ddl处理程序[否则它由StaticFileHandler处理并作为404出现错误].但是,我希望我的网络应用程序能够为人们正常运行,而无需使用IIS.

所以我有几个问题:

  • 有没有人有关于.html => .aspx重写页面为什么Page.User总是等于null的想法?
  • 为什么它适用于VWD 2008,而不是IIS7?
  • 从IIS6 => IIS7改变了什么可能导致这种情况?
  • 有关变通方法的其他想法吗?

[注意:我刚尝试了.aspx => .aspx重写,但没有出现问题.不是我想要的,但我想我应该提到它.

Sam*_*Sam 11

刚刚在UrlRewriting.Net模块上取得了突破.这使它在IIS7中以集成模式工作:

<modules runAllManagedModulesForAllRequests="true">

搞清楚之后,我搜索了"runAllManagedModulesForAllRequests",首先出现的是Scott Guthrie的博客,该博客实际上是为了这个目的而讨论它.

  • 是的IIS中的集成模式是IIS6和7之间的主要区别.您可能希望查看将IIS6中的ASP.NET应用程序移动到IIS7(http://msdn.microsoft.com/en-us/library/bb515251. ASPX).正如您所发现的,VWD 2008通过.NET运行所有内容,因此它在集成模式下有效运行,并将runAllManagedModulesForAllRequests设置为true. (2认同)