← About Jeff

Upgrading ASP.NET Applications to the Integrated Pipeline

December 11, 2006

There's a helpful article at the IIS.NET site detailing a lot of what it means to upgrade your developer workstation to Vista, what changes IIS 7.0 brings, and ASP.NET application compatibility.  Direct link to the article.

The most important content in this article, in my opinion, is that which outlines the specific ASP.NET changes.

Here is the list of known changes with IIS 7.0 at this time:

  • In Integrated mode, Application_OnError is not called for exceptions that occur in HttpApplication::Init
  • Server.ClearError in EndRequest does not clear exception message in Integrated mode
  • Integrated mode applications may write to a response in EndRequest after an exception has been formatted and written to the response
  • In Integrated mode, ASP.NET no longer suppresses the content type when the response is empty
  • Different windows identity in Forms authentication
  • Default Authentication_OnAuthenticate event does not raise in Integrated mode
  • In Integrated mode Request.RawUrl contains the new query string after RewritePath is called
  • Passport Network credentials authentication is not supported in Windows Vista
  • PassportAuthentication module is not part of the Integrated pipeline
  • Large, valid forms auth tickets (length <= 4096 bytes) present in the query string are rejected by IIS 7.0
  • In Integrated mode, the ASP.NET request time-out is applied multiple times during the request, allowing the request to execute longer
  • Trace settings are not transferred to Server.Transfer target page
  • The method Httpcontext.Current.Response.Write() cannot work in Application_Onstart()
  • HttpRequest.LogonUserIdentity throws an exception when accessed before PostAuthenticateRequest
  • In Integrated mode, ASP.NET modules will receive the first unauthenticated request to IIS when Anonymous authentication is disabled
  • ASP.NET cannot impersonate the client identity until PostAuthenticateRequest
  • Content-Type header is not generated when charset and content type are set to empty string
  • In Integrated mode, both synchronous and asynchronous events raise for each module before the next module executes
  • Response headers are removed in Integrated mode after calling ClearHeader in a custom IHttpModule
  • Using Windows and Forms authentication together in Integrated mode is not supported
  • In Integrated mode, IIS always rejects new lines in response headers (even if ASP.NET enableHeaderChecking is set to false)
  • PreSendRequestHeaders and PreSendRequestContent events will raise together for each module
  • The ordering of modules is reversed for PreSendRequestHeaders and PreSendRequestContent when using Integrated mode
  • In Integrated mode, threading and queuing settings in are ignored
  • If a configuration file error is encountered when using Integrated mode, IIS, not ASP.NET, generates the error message
  • In Integrated mode, ASP.NET applications must subscribe to pipeline events during a module’s Init call