You have to face several configuration errors while migrating ASP.Net web application from IIS 6 to IIS 7. One of the main and well known error which you will receive a 500 - Internal Server Error.  This can include HTTP Error 500.22, and HTTP Error 500.23: An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode.

It occurs because ASP.NET modules and handlers should be specified in the IIS <handlers> and <modules> configuration sections in Integrated mode.


Before moving forward towards solution of this problem, I would like to give you some background behind the scene. For understanding the solution of this problem first we need to have some idea about IIS 7. IIS 7 increases ASP.NET power further by integrating the ASP.NET runtime extensibility model with the core server. This allows ASP.Net developers to fully extend the IIS 7 server with the richness of ASP.NET 2.0 and the .NET Framework. This integration enhances existing applications, and allows new applications to take advantage of ASP.NET features. ASP.NET is configured on IIS 7 to operate in the new Integrated mode by default. This enables your application to take advantage of Integrated mode enhancements with minimal modifications. While IIS 7 provides the improved ASP.NET integration by default, there is a choice: IIS 7 supports both the new and the old ASP.NET integration modes that can be used side by side on the same server. ASP.NET setup does provide an application pool named "Classic .NET AppPool" that runs in the classic ASP.NET integration mode. You can use this application pool for applications that should not run in Integrated mode. On IIS 7, ASP.NET applications run in Integrated mode by default. However, in order to take advantage of the benefits provided by tighter integration, you must make some modification to application configuration.


While migrating existing ASP.Net application from IIS 6 to IIS 7, because of the configuration unification, some applications may require migration in order to operate property in Integrated mode. IIS will automatically detect this configuration and issue an error asking you to migrate your application, or move it to classic mode if migration is not acceptable. ASP.NET applications require migration when specifying configuration in <httpModules> or <httpHandlers>. Otherwise following configuration causes the migration error:

1.   The application web.config file defines <httpModules> configuration.
The application loads new ASP.NET modules, or removes existing ones.
In Integrated mode, ASP.NET modules are specified together with native modules in the unified <system.webServer>/<modules> configuration section.
The ASP.NET modules specified in the <system.web>/<httpModules> configuration section must be moved to the new configuration section in order to take effect. Subsequently, new ASP.NET modules must be added directly to the unified <modules> section.
2.    The application web.config file defines <httpHandlers> configuration.
The application uses custom handler mappings for some content types.
In Integrated mode, the ASP.NET handler mappings must be specified in the unified <system.webServer>/<handlers> configuration section in order to take effect. Subsequently, new ASP.NET handler mappings must be added directly to the unified <handlers> section.
The section replaces both the ASP.NET <httpHandlers> configuration AND the IIS 7 scriptmaps configuration, both of which previously had to be configured in order to set up an ASP.NET handler mapping.

You must migrate the application configuration to work properly in Integrated mode. IIS 7 takes care of migrating the application by using the APPCMD.EXE command line tool to perform the migration. You can also migrate manually by moving the custom entries in the <system.web>/<httpModules> and <system.web>/<httpHandlers> configuration manually to the <system.webServer>/<handlers> and <system.webServer>/<modules> configuration sections, and either removing the <httpHandlers> and <httpModules> configuration OR adding the following to your application’s web.config:

    <validation validateIntegratedModeConfiguration="false" />

For running the command line tool, right click the Programs\Accessories\Command Prompt icon, and choose "Run as administrator") in order to instantly migrate your application to Integrated mode.

The basic format of the migration command is the following:

%windir%\system32\inetsrv\APPCMD.EXE migrate config 

Where <Application Path> is the virtual path of the application containing the site name, such as "localhost/samplewebsite".

If the above error occurs then you need to give some permissions to the web application to which you want to migrate. Open the IIS 7 and select the application.

After clicking a popup will appear. Click on Security Tab.

Click on Edit button to edit the permissions.

Click on Add.. button to add ASPNET account.

Click on OK and Allow the Full control and click on OK

Now run the tool again.

When migration is complete, your application runs in both Integrated and Classic modes without a problem.

Copyrights 2020,