UrlRewriting.Net Module + IIS7 Equals Page.User == null?

前端 未结 3 1879
萌比男神i
萌比男神i 2021-01-19 05:14

I\'ve used the UrlRewriting.Net module for a couple years now without any problems in Windows XP and Windows 2003. I just recently upgraded my home PC to Windows 7 and start

相关标签:
3条回答
  • 2021-01-19 05:45

    Another approach that seems to work is to remove the Session module and readd it leaving the "Invoke only for requests to ASP.NET applications or managed handlers" checkbox unchecked. It looks like this in the web.config file:

    
    <system.webServer>
      <modules>
        <remove name="Session" />
        <add name="SessionManualAdd" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </modules>
    </system.webServer>
    

    It seems the problem is that the Session module doesn't execute for say '*.htm' files when HttpContext.RewritePath is used, but removing and readding the module in this fashion causes the Session handler to be executed for the request.

    This solution was suggested on the thread below. Unfortunately Microsoft chose not to explain the reasoning behind this behavior fully:

    http://connect.microsoft.com/VisualStudio/feedback/details/357248/context-rewritepath-disables-session-module-in-iis7

    0 讨论(0)
  • 2021-01-19 05:49

    Microsoft included a fix for this issue (at least for extensionless urls) in Service Pack 1 for Win7 and Windows Server 2008 R2: http://www.microsoft.com/download/en/details.aspx?id=5842

    Also available as a hotfix: http://support.microsoft.com/kb/980368

    After this patch is applied, ASP.NET 4 applications can handle requests for extensionless URLs. Therefore, managed HttpModules that run prior to handler execution will run. In some cases, the HttpModules can return errors for extensionless URLs. For example, an HttpModule that was written to expect only .aspx requests may now return errors when it tries to access the HttpContext.Session property.

    After applying SP1 or the hotfix, no web.config changes are needed to make the session and forms auth work for extensionless URLs rewritten to asp.net pages/handlers/etc.

    I don't know if this fixes anything for rewrites to static file extensions like .htm. My guess is, probably not. I would try to avoid setting runAllManagedModulesForAllRequests="true" in production environments, because it adds unnecessary overhead on static file requests.

    0 讨论(0)
  • 2021-01-19 05:55

    Just had a breakthrough with the UrlRewriting.Net module. This makes it work in Integrated Mode in IIS7:

    <modules runAllManagedModulesForAllRequests="true">

    After figuring it out I did a search on "runAllManagedModulesForAllRequests" and the first thing that popped up was Scott Guthrie's blog which actually talks about using it for this purpose.

    0 讨论(0)
提交回复
热议问题