Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4025056
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T10:47:56+00:00 2026-05-20T10:47:56+00:00

We have an ASP Classic website running on Windows Server 2003 and IIS6 which

  • 0

We have an ASP Classic website running on Windows Server 2003 and IIS6 which is throwing intermittent runtime error 424 object required. We’ve tracked this down to the line which initialises the object reference to the metabase as shown below (second line):

MetaBasePath="IIS://" & ComputerName & "/" & StorageKey & "/" & DataAccessKey
Set ConfigKey=GetObject(MetaBasePath)
DataSource=ConfigKey.Get("ODBCDataSource")
UserName=ConfigKey.Get("ODBCUserName")
Password=ConfigKey.Get("ODBCPassword")

I’ve searched stackoverflow (and the web in general) for any signs of anyone else having this issue but have drawn a blank. Does anyone have any ideas what could be causing this? Are there any performance related settings which control the frequency of access to the Metabase? Are there any best practice measure we can employ to improve the efficiency of Metabase access? Are we correct in assuming that we are doing the right thing by hiding our database access details in the Metabase or is this overkill in terms of security?

This issue affects us on approximately 1% of page hits.

We are looking at a range of actions including checking the patch level of the server software components and potentially adding a loop around the above code to keep trying until the Metabase object is initialised correctly but this would at best be a short term fix in my opinion.

Advice most welcome!
Thanks,
Craig.

Additional info: Just discovered that IIS5.0 Isolation Mode is enabled. I’m trying to find out why this was enabled but could this be relevant?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T10:47:57+00:00Added an answer on May 20, 2026 at 10:47 am

    IIS Metabases are NOT meant for security, but merely for convenience.

    Its just a central repository for data shared by several virtual servers (IIS/ASP applications). So you if are using it just for security purposes, then Metabase is not needed at all.

    Because:

    • Who are you “hiding our database access details” from? The programmer? But he HAS access to it already. After assigning ConfigKey.Get("ODBCPassword") to Password, any response.write would reveal it. Even if that is done in global.asa, somewhere you will have to convert it to a connection string (or store it in an Application variable) so .asp pages can create the database connection objects. At some point between the Metabase and the object creation he WILL have access to the connection properties.

    • Dont even think about preventing this by creating the connection object at global.asa and storing the object itself in an Application variable. (thus hiding the creation from programmer-accesible files). Not only this kills connection pooling, but its a huge negative performance hit.

    If you are concerned about database security from ASP pages, here are some approaches i suggest:

    • Create a different database user for website access, with very limited priviledges. Meaning SELECT, INSERT, UPDATE, DELETE and EXECUTE (stored procedures) only. No DROP, CREATE, ALTER, etc. This way, any “password leakage” or “programmer misuse” would not seriously compromise the database. The “admin” user password, with full priviledges, would never be accessible (or used) anywhere in the website.

    • Create an ActiveX (or COM, DCOM) DLL to wrap the connection settings. It could be writen in C#, VB.NET or even classic VB6. It would read login and password from another (secure and web-innacessible) server file, create the connection object, and pass it to ASP directly.

    So instead of using:

    set objConn = Server.CreateObject("ADODB.Connection")
    

    The ASP pages would use:

    set objConn = Server.CreateObject("MYCLASS.Connection")
    

    The config file itself could even be encrypted, as the decripit algorithm would be stored in the compiled code, NOT in a plain text ASP file.

    That said, I dont mean the Metabase is useless. Its still a good, convenient place to store data, because:

    • Data can be changed without changing any line of code

    • Several websites can share data, even when each has it own isolated app

    • Centralized data is always easier to mantain than keeping config and include files scattered all over the filesystem

    • User/NTFS permititions can be set up in a way that only authorized people can change the data, but website users (and ASP developers) can only read it

    That said, the “limited database user” + “COM class connection wrapper” is the approach used in most companies ive worked with. The ones concerned about security, of course. The others just use the “connection string hardcoded in global.asa then stored in application variable”.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a shopping cart website running classic ASP that needs help during the
I have a website with a mix of ASP (classic) and ASP.NET pages. For
I have recently inherited a website written in Classic ASP, and am currently trying
I have this classic ASP site which has been working fine until we updated
I'm using VBScript (ASP Classic) and SQL Server; I'm trying to have a section
I have a bunch of old classic ASP pages, many of which show database
We have a large ASP classic code base but I'm looking to do future
We have a classic ASP application that simply works and we have been loathe
This is ASP classic, not .Net. We have to get a way to SFTP
I have a couple of questions regarding VBScript and ASP Classic: What is the

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.