User-166373564 posted
Hi,
Welcome to asp.net forum.
I have the code working in development and test so I know it works. My problem is with production.
From your description above, it's recommended to look into the log file in IIS 8.0, you need enable the failed Request Tracing in IIS, and check log files in C:\inetpub\logs\FailedReqLogFiles, this will give us some hint on why a request has failed.
If we temporarily change the application pool identity to run as a server administrator, the code executes fine.
For every application pool you create, the Identity property of the new application pool is set to
ApplicationPoolIdentity by default. The IIS Admin Process (WAS) will create a virtual account with the name of the new application pool and run the application pool's worker processes under this account by default.

For this issue, it's also recommended to grant a User admin permission, and check whether it can fix it.
In addition, it still has same issue, you can consult IIS experts in IIS forum, I think IIS experts can give more precise troubleshooting for you.
With regards,
Angie