Published on

Migrating From ColdFusion 10 to 11 Side-by-Side

Authors

Earlier today we migrated our dev/staging server from ColdFusion 10 to 11 without using CF's built-in server. We wanted to do this as a side-by-side migration to test and flesh-out the process before we actually made the switch on our production servers. Here's how it went.

Before we began the CF11 installation we setup a temporary site in IIS just for our CF11 Admin.

During the install we chose to install it only on the site we had just setup so it wouldn't affect our other ColdFusion 10 sites.

After ColdFusion 11 installed, we tried to load the CF Admin and IIS eagerly presented us with a lovely 500 error. Because ya know... everything always goes smoothly... Said no one ever.

IIS 500 Error - IsapiModule - isapi_redirect.dll

Classic. Now, how do we fix it?

First, we attempted to run CF11's Web Connector tool to see if removing and adding it back fixes it. No dice.

Then, we took a look at the handler mappings in IIS for our CF11 Admin site.

Ah ha! **They were pointing to CF10's `isapi_redirect.dll`**. This is obviously wrong as they should be pointing to CF11's.

So, we updated them all to point to CF11 and because we had changed them on the site specific level they will not affect any of our other sites. Win!

IIS Handler Mappings

Coldfusion's (default) IIS Handler Mappings

  • cfcHandler
  • cfmHandler
  • cfmlHandler
  • cfrHandler

After updating the mappings, there was still one more setting that had to be changed. The ISAPI filters.

ISAPI Filters

ISAPI Filters - The last piece of the puzzle

Opening up the ISAPI Filters config we saw that the tomcat executable was pointing to CF10 like the handler mappings were previously.

IIS wouldn't let us change the tomcat executable path via the GUI so we had to manually update the web.config 1 file for our CF11-Admin site.

<configuration>
    <system.webServer>

       <isapiFilters>
         <remove name="tomcat" />
         <filter
            name="tomcat"
            enabled="true"
            path="C:\ColdFusion11\config\wsconfig\1\isapi_redirect.dll" />
       </isapiFilters>

     ...rest of your web.config...

    </system.webServer>
</configuration>

By adding the <isapiFilters> node we can now override our global IIS ISAPI Filters. <remove name="tomcat" /> tells IIS to remove the tomcat binding so we can then add our own tomcat filter with CF11's path.

After we made that update we took a look at our ISAPI Filter in IIS just to make sure all was good.

Updated tomcat executable

Nice! Tomcat is pointing to our CF11's connector and our CF11 admin is loading!

We can now configure CF11 before we make the final cutover.

TLDR;

  • CF11 Site: Update CF's IIS Hander Mappings to point to CF11's connector
  • CF11 Site: Update Tomcat's ISAPI Filter via web.config to point to CF11's connector

^1: IIS web.config ISAPI Filters

© 2015-2022 AnthonyMineo.com