Frequently Asked Questions

Help Center Search

Migration Issues with IIS 7's Integrated Pipeline Mode

Print this Article
Comment on this Article
Last Updated: March 10, 2008 2:38 PM

IIS 7 offers two pipeline modes. Due to the integration between the ASP.NET runtime and IIS, the default integrated pipeline mode handles all requests through a unified pipeline. This design allows code greater access to various points in the request process.

IIS 7's classic mode behaves in the same manner as IIS 6 and uses two pipelines to process requests, one for native-code application components and the other for managed code application components.

The default pipeline mode for new IIS 7 hosting accounts is integrated. This option can be changed in your Hosting Control Center.

For an overview of migrating ASP.NET applications to IIS 7 integrated mode, see ASP.NET Migration with IIS 7.

To run as intended, legacy code may require classic mode. The following areas are affected by upgrading from classic to integrated mode:

Configuration

Web.config files may need the following entry to disable migration error message:

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>

HttpRuntime change notification parameters are ignored for web.config files

Certain configuration error conditions in web.config files result in IIS configuration errors, not ASP.NET configuration errors

Authentication and authorization

Integrated mode does not provide user principal/impersonation token until PostAuthenticateRequest

Impersonate identity is not correct using FormsAuthentication

Different windows identity exists for form-based authentication

FileAuthorizationModule.CheckFileAccessForUser always returns 'True'

Large, valid forms auth tickets (length

PassportAuthentication is not supported

URL validation

The "+" character is rejected in URL

Headers

IIS rejects new lines in response headers, even when ASP.NET enableHeaderChecking is set to false

Content-type empty response is no longer surpressed

ASP.NET request timeout is applied multiple times during the request, allowing the request to execute longer

General

Application queues are not used

HttpContext.Rewrite performs a child request in Integrated mode

DefaultHttpHandler is not supported. Applications relying on sub-classes of DefaultHttpHandler will not be able to serve requests.

Trace settings are not transfered to Server.Transfer target page

It is possible to write to response an EndRequest after an exception has been formatted and written to the response

Modules, handlers and events

Both Sychnronous and asynchronous events fire for each module before the next module executes

Response headers are removed in Integrated mode after calling ClearHeader in a custom IHttpModule

The ordering of modules is reversed for PreSendRequestHeaders and PreSendRequestContent

A broken link is added to the page when Response.Transmit sends an empty file with image type

Default Authentication_OnAuthenticate event does not raise in Integrated mode