Hello,

I have a few web applications that I have been running on one of our web servers at work and everything is fine. Rearrangements have come about and a change of server is needed. Therefore all the intranet websites/applications on one server were moved onto a new server. But now some of the applications just don't work.

I'm getting the following error in 3 of 8 websites/applications:

Operation is not allowed when the object is closed

The strange thing is I can't find any consistency between the 8 websites. All the HTML only websites are working fine. The 3 websites that are not working all try to access an MS Access database and this is where the error is coming from. However, there are another 2 applications that access MS Access database's but are not suffering from this error :X I'm guessing its some sort of permissions error in the folders/files or IIS itself but I can't seem to work it out. The scripts themselves have not changed so I can rule out any coding errors. If anyone has any ideas or directions I could go with this your help would be greatly appreciated, thanks.

Regards.

Dani AI

Generated

Short diagnosis and why it looked intermittent

As discovered later in the thread, the ADO error "Operation is not allowed when the object is closed" is often a symptom, not the root cause: the code is trying to use a Recordset that never opened because the Access engine failed to open the file. That failure commonly comes from IIS using a Windows account that does not have the required NTFS rights (Access must be able to create its lock file in the database folder). Different sites can run under different identities, so some moved sites continue to work while others do not. correctly pointed to IIS authentication as the place to look; checking the running identity is the first step.

Quick checklist to fix and validate

  • Check which account IIS uses for that site (Anonymous Authentication / Edit → see IUSR_xxx, NETWORK SERVICE, or an application-pool identity such as IIS APPPOOL\<PoolName>).
  • Give that account Modify (read/write/create) permission on the folder that contains the .mdb/.accdb (Access needs to create .ldb or .laccdb lock files). Use the security tab or an administrative command. Example (run elevated):
    icacls "C:\inetpub\wwwroot\MySite\Data" /grant "IIS APPPOOL\MyAppPool":(OI)(CI)M

    or for legacy accounts:

    icacls "C:\inetpub\wwwroot\MySite\Data" /grant "IUSR":M
  • Verify the connection string and file path (avoid mapped drives; prefer Server.MapPath or absolute local paths). Sample providers:
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\mydb.mdb;Persist Security Info=False;
    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\mydb.accdb;Persist Security Info=False;

Practical checks and cautions

Create a tiny test page that opens the DB and reports success/failure and the Windows identity the site is running as; look for the lock file appearing after a successful open. Check Event Viewer and IIS logs for permission errors. Do not give the folder Everyone/FullControl in production—grant the least privilege (the specific app-pool or IUSR account). If concurrency or reliability is important, consider moving off Access to a server DB (SQL Server, LocalDB, etc.).

Recommended Answers

All 5 Replies

Can you post some code?

-sypher

I don't think the code will indicate anything because the exact code works fine on two other computers. It has to be a permissions issue with folders/files or IIS. Unfortunately I'm not sure what permissions I may have set incorrectly.

Does anyone have any suggestions for fixing the permissions?

Regards.

Have you checked the permissions on the Access DB? Is it set to owner, or user mode? Under the Right Click -> Properties -> Security tab is those computers that work with it listed, and those that don't not listed???

How about the same for the folder / IIS folder (also) that would have the application in it?

For anyone's information the reason for the message I had later discovered was the security settings in IIS for anonymous access. I had to put this on to get those websites working.

And this is required, so nothing unusual there. Why was it set to not allow anonymous? The only reason to have it not anonymous is if you want to only allow those on your domain (active directory type thing) to acces those pages.

Hence the help file : "Before your server can authenticate users, however, you must first create valid Windows user accounts and then configure Windows File System (NTFS) directory and file permissions for those accounts. For more information, see About Authentication."

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.