We had to start from scratch on our test server, so the sysadmin team installed ColdFusion 11 and attempted to connect IIS. The .cfm pages show up fine in the CFIDE directory, but we need our 'web root' to be a different directory on a different drive (F:\someDir). The .cfm pages in the different directory (F:\someDir) display as html (including showing the ColdFusion tags). This is our first time trying IIS, in the past we've successfully connected using Apache, but not on this new server.
We've checked directory and file permissions. We've removed the web connector and added it back. The sysadmin team created a site in IIS with F:\someDir.
Unfortunately I don't know enough about IIS to help our sysadmin team troubleshoot, but I'm guessing it might be related to a 'Jakarta virtual directory in IIS for that site'.
Can anyone explain 'Jakarta virtual directory in IIS' in more detail or give some ideas on what could be happening?
Copy link to clipboard
Web server integration can be kind of complicated. When you install the CF connector into IIS, you have several choices: have it work for all sites through a universal configuration automatically inherited by new sites (but maybe not with old ones), have it work for all sites through a per-site configuration (which again may not be inherited), or have it work with a single site. It would be useful to know which of those you chose.
For CF to process a page, IIS has to identify that CF should process the page in the first place. IIS has two mechanisms it uses for this. One is applied to specific file extensions like *.cfm, *.cfc etc. This is called an ISAPI mapping, and is invoked when that file extension is right in the URL. The other is applied to all URLs, and is invoked by IIS and processed using the Jakarta virtual directory. Both the ISAPI mapping and the Jakarta virtual directory actually point to the same connector DLL, but each is triggered by a different event. When you install the connector, it should set up both the ISAPI mapping and the Jakarta virtual directory for one or more IIS virtual servers. Each IIS virtual server needs its own copy of the DLL, basically (I'm oversimplifying a bit here, but let's ignore that for now) and both the ISAPI mapping and the Jakarta virtual directory need to point to the same copy of the connector DLL.
Dave Watts, Fig Leaf Software
Thanks for the info, that was helpful. For anyone else, we had to do a few things to get it to work:
1. Remove all existing connectors (as admin) and add a universal configuration (also as admin). Verified only one config directory (with the number 1) was correctly set up for ISAPI as listed here: Re: Upgraded to CF 10 - site won't load w/out index.cfm
2. The jakarta virtual directory wasn't initially set up until step #1 happened above (possibly we didn't explicitly run as admin before).
3. We were having a problem where the page wasn't displaying at all, so had added a Mime type for .cfm to interpret as text/html. We needed to remove this Mime type. Found that out by looking in web.config.
4. Had to set 'Enable 32-bit Applications' to true in IIS in the Application Pool.
I know you don't want to go through all of this again, but if you had to enable 32-bit applications in IIS, you installed the wrong version of CF. You should really install the 64-bit version of CF, because it will be able to allocate significantly more memory. This is a big advance over the 32-bit version for a lot of use cases.
Dave Watts, Fig Leaf Software