Connecting to an Access Database using Classic ASP without FrontPage Server Extensions
Author of Velocity: The Basics: Scripting with a $ here and a # to do, Web Developer and former Computing Support Analyst and Licensed Professional Counselor
September 11, 2014
I'll admit. I'm not a server administrator nor a Windows Server guy, but I recently was tasked to get a classic ASP application (which uses an Access Database) working on Windows Server 2012. The catch is that the application originally ran on Windows Server 2003 and used FrontPage Server Extensions (FPSE). And FPSE is not installed on my instance of Windows 2012 (and I am not using an alternative such as Expression Web). It took me some digging and research, but I came up with the following steps, which worked:
- Open Internet Information Services (IIS) Manager and locate your site (app), which I will call "Default Web Site".
- In Windows Explorer, ensure that both local server accounts IUSR and IIS_IUSRS have read access for the entire site, .asp files and .mdb files and directories containing them.
- In IIS Manager, go to the folder for the site, double-click ASP and ensure Parent Paths set to True.
- For debugging, go to the site in IIS Manager, open ASP and set Send Errors to Browser to True.
- To use classic ASP and Server-Side Includes (SSI), go to Server Manager, All Servers, Manage, Add Roles and Features and click Next to get through server roles and check under Web Server IIS, Web Server, Application Development, and ensure that SSI is installed as well as ASP. Also check CGI and install it.
- For SSI, go to C:\Windows\SysWOW64\inetsrv\ and run appcmd.exe set config "Default Web Site" -section:system.webServer/serverSideInclude /ssiExecDisable:"False" /commit:apphost
(Where "Default Web Site" would be the name of the site)
- Run the following from C:\Windows\SysWow64\inetsrv\:
appcmd.exe set config -section:applicationPools /[name='DefaultAppPool'].processModel.loadUserProfile:false
(Where "DefaultAppPool" is the name of the Application Pool)
- Go to IIS manager, go to the app, select Basic Settings and take note of its Application Pool. Then go to Application Pools, highlight the DefaultAppPool, then clicked Advanced Settings... in the Actions pane and verify that True is set for Enable 32-Bit Applications. Click OK. Click OK to close the Advanced Settings dialog.
- For debugging, one can see the true error if one opens the hidden folder /_fpclass/ and edits the fpdbrgn1.inc file, changing fp_DEBUG = False to fp_DEBUG = True
- Go to c:\Windows\SysWOW64 and run odbcad32 and set up under the System DSN tab the tablename used in the ASP and point the DSN to the .mdb Access database, using the 32-bit driver "Driver do Microsoft Access (*.mdb)".
- This may be needed if you have an app underneath an app (basically a repeat from 2 steps back but now applied to the sub-app): Go to IIS manager, go to the app, select Basic Settings and take note of its Application Pool. Then go to the Application Pools, select the Application Pool you took note of, select Advanced settings and set “Enable 32-Bit Applications” to True.
Once I did all of this, it certainly helped me. I hope it helps you, too.